SQL podupit spojiti s vanjskim upitom

Sql Podupit Spojiti S Vanjskim Upitom



Kada je riječ o radu s relacijskim bazama podataka, morate svladati kako manipulirati i kombinirati upite za obavljanje zadataka koje želite. Zato svaki motor relacijske baze podataka implementira svoj okus SQL jezika pokušavajući pružiti iznimne značajke, učinkovitost i jednostavnost korištenja za svoje korisnike.

Jedna od najmoćnijih značajki SQL-a su podupiti. Podupiti su skup ugniježđenih upita unutar većeg i složenijeg upita. Podupiti vam omogućuju dohvaćanje podataka ili izvođenje složenijih operacija kao jednog entiteta.







Podupite možemo koristiti za filtriranje podataka, sortiranje, agregaciju na više tablica i više.



Međutim, još jedna značajka koja je skrivena ispod SQL podupita poznata je kao spajanje podupita. Oni su slični podupitima; umjesto toga, to su spojevi koji vam omogućuju korištenje podupita unutar vanjskog upita za spajanje tablica zajedno.



Ako vam se vrti u glavi, ne brinite jer spajanje podupita može biti teško svladati, osobito u početku. Međutim, ovaj vodič pokušava raščlaniti spojeve podupita u elementarnim koracima bez prepuštanja previše slučaju.





Imajte na umu da pretpostavljamo da niste novi u SQL-u, SQL spajanjima, SQL podupitima ili slično. Međutim, ako jeste, pogledajte naše vodiče o temama da biste saznali više.

Savladajte SQL vanjske spojeve

Ako želite razumjeti kako raditi sa spojevima podupita, ključno je naučiti kako raditi s vanjskim spojevima.



Ako niste upoznati, SQL vanjsko spajanje omogućuje vam dohvaćanje svih redaka iz jedne tablice i odgovarajućih redaka iz druge tablice. Malo je složeniji od toga, uključujući lijevi vanjski spoj, desni vanjski spoj, puni vanjski spoj itd.

U SQL lijevom vanjskom spoju, upit vraća sve retke iz lijeve tablice i odgovarajuće retke iz desne tablice. Upit uključuje NULL vrijednosti u dobivenim stupcima ako u desnoj tablici nema odgovarajućih redaka.

U slučaju desnog vanjskog spajanja, upit vraća sve retke iz desne tablice, ali samo odgovarajuće retke iz lijeve tablice. Slično, upit uključuje NULL vrijednosti ako nema odgovarajućih redaka iz lijeve tablice.

Konačno, imamo potpuni vanjski spoj. Ovo spajanje vraća sve retke iz desne i lijeve tablice i NULL vrijednosti za sve zapise koji se ne podudaraju.

Spojevi SQL podupita

Sada kada razumijemo SQL podupite, razgovarajmo o spajanjima podupita. Spoji podupita omogućuju nam korištenje podupita unutar vanjskog upita za spajanje tablica.

Ako pitate, je li to to? Da, to je sve što spajanje podupita radi.

Da biste to bolje demonstrirali, uzmite sljedeći primjer sintakse koji je prikazan u nastavku:

IZABERI *
IZ tablice1
LIJEVI VANJSKI SPOJ (
SELECT stupac1, stupac2
IZ tablice2
) AS podupit
ON table1.column3 = podupit.column1;


U prethodnoj sintaksi odabiremo sve stupce iz tablice jedan pomoću lijevog vanjskog spoja kako bismo ga spojili podupitom. Uloga podupita je dohvaćanje definiranih stupaca iz tablice 2. Zatim ga pridružujemo tablici 1 pod uvjetom stupca 2 iz tablice 1 i stupca 1 iz podupita.

Praktični primjer:

Teoretski, čini se manje intuitivnim, ali uzmimo scenarij iz stvarnog svijeta koristeći bazu podataka Sakila.

Pretpostavimo da želimo dohvatiti popis svih filmova u bazi podataka i njihove jezike. Jezici filmova pohranjeni su u tablici jezika, a nazivi filmova pohranjeni su u tablici filmova.

Međutim, filmska tablica ima strani ključ koji se naziva stupac 'language_id' iz tablice jezika. Stoga možemo upotrijebiti spajanje podupita s lijevim vanjskim spajanjem kako bismo spojili dvije tablice kao što je prikazano u sljedećem upitu:

SELECT f.title, l.name AS language
IZ filma f
LIJEVI VANJSKI SPOJ (
SELECT language_id, naziv
IZ jezika
) KAO l
ON f.language_id = l.language_id;


U prethodnom primjeru upita odabiremo stupac naslova iz tablice filma i stupac naziva iz tablice jezika.

Zatim koristimo podupit za odabir language_id-a i stupca naziva iz tablice jezika. Sljedeći korak je pridružiti ga tablici filma pod uvjetom da je language_id iz tablice filma jednak language_id-u iz tablice jezika.

Kako bismo osigurali da su svi filmovi uključeni u rezultat, moramo koristiti lijevi vanjski spoj koji se sastoji od svih rezultata iz lijeve tablice koja je u ovom slučaju tablica filmova.

Primjer izlaza je sljedeći:


Također možemo učiniti isto s desnim vanjskim spajanjem. Sintaksa je sljedeća:

IZABERI *
IZ tablice1
DESNI VANJSKI SPOJ (
SELECT stupac1, stupac2
IZ tablice2
) AS podupit
ON table1.column3 = podupit.column1;


Ovo se ponaša slično, ali uključuje sve zapise u desnoj tablici čak i ako nema podudarnih zapisa.

Korisne stvari koje treba znati

Dobro je razumjeti da iako su spajanja podupita nevjerojatno korisna i mogu optimizirati vaš tijek rada, koristite ih s oprezom.

Na primjer, izbjegavajte korištenje spojeva podupita s velikim skupom podataka. To je zato što mogu vratiti opsežne zapise koji mogu utjecati na performanse baze podataka.

Razmislite o korištenju alata za analizu upita prije izvršavanja bilo kakvih spajanja podupita.

Zaključak

Ovaj vodič istražio je osnove rada s podupitima i spojevima podupita u SQL-u. Na kraju ovog vodiča sada razumijete kako raditi sa spojevima podupita, zašto ih trebate koristiti i praktičan primjer kako vam mogu pomoći u tijeku rada.