SQL Subquery Join with Outer Query

Sql Subquery Join With Outer Query



Când vine vorba de lucrul cu baze de date relaționale, trebuie să stăpâniți cum să manipulați și să combinați interogările pentru a îndeplini sarcinile pe care le doriți. Acesta este motivul pentru care fiecare motor de baze de date relaționale își implementează aroma limbajului SQL încercând să ofere caracteristici excepționale, eficiență și ușurință de utilizare pentru utilizatorii săi.

Una dintre cele mai puternice caracteristici ale SQL sunt subinterogările. Subinterogările sunt un set de interogări imbricate într-o interogare mai mare și mai complexă. Subinterogările vă permit să preluați datele sau să efectuați operațiuni mai complexe ca o singură entitate.







Putem folosi subinterogările pentru a efectua filtrarea datelor, sortarea, agregarea pe mai multe tabele și multe altele.



Cu toate acestea, o altă caracteristică care este ascunsă în subinterogări SQL este cunoscută sub denumirea de alături de subinterogare. Acestea sunt similare cu subinterogările; în schimb, sunt îmbinări care vă permit să utilizați subinterogări dintr-o interogare exterioară pentru a uni tabelele împreună.



Dacă ți se învârte capul, nu-ți face griji, deoarece alăturarea subinterogării poate fi dificil de stăpânit, mai ales la început. Cu toate acestea, acest tutorial încearcă să descompună conexiunile subinterogare în pași elementari, fără a lăsa prea mult la voia întâmplării.





Rețineți că presupunem că nu sunteți nou în SQL, SQL Joins, SQL Subqueries sau așa ceva. Cu toate acestea, dacă sunteți, consultați tutorialele noastre despre subiecte pentru a afla mai multe.

Stăpânește îmbinările exterioare SQL

Dacă doriți să înțelegeți cum să lucrați cu îmbinările de subinterogare, învățarea cum să lucrați cu îmbinările exterioare este un factor cheie.



Dacă nu sunteți familiarizat, o îmbinare exterioară SQL vă permite să preluați toate rândurile dintr-un tabel și rândurile care se potrivesc din al doilea tabel. Este puțin mai complex decât atât, inclusiv îmbinarea exterioară stângă, îmbinarea exterioară dreaptă, îmbinarea exterioară completă etc.

Într-o îmbinare exterioară stângă SQL, interogarea returnează toate rândurile din tabelul din stânga și rândurile care se potrivesc din tabelul din dreapta. Interogarea include valorile NULL în coloanele rezultate dacă nu există rânduri care se potrivesc în tabelul din dreapta.

În cazul unei îmbinări externe dreapta, interogarea returnează toate rândurile din tabelul din dreapta, dar numai rândurile care se potrivesc din tabelul din stânga. În mod similar, interogarea include valorile NULL dacă nu există rânduri care se potrivesc din tabelul din stânga.

În cele din urmă, avem îmbinarea exterioară completă. Această îmbinare returnează toate rândurile din tabelele din dreapta și din stânga și valorile NULL pentru orice înregistrări care nu se potrivesc.

Uniri de subinterogare SQL

Acum că înțelegem despre subinterogările SQL, să vorbim despre îmbinările subinterogărilor. Îmbinările subinterogărilor ne permit să folosim subinterogări dintr-o interogare exterioară pentru a se alătura tabelelor.

Dacă întrebi, asta este? Da, asta este tot ceea ce fac uniunile subinterogare.

Pentru a demonstra mai bine acest lucru, luați următorul exemplu de sintaxă care este demonstrat în cele ce urmează:

SELECTAȚI *
DIN tabelul 1
ÎNTREPRINDERE EXTERIOR STÂNGA (
SELECT coloana1, coloana2
DIN tabelul 2
) subinterogare AS
ON table1.coloană3 = subinterogare.coloană1;


În sintaxa anterioară, selectăm toate coloanele din tabelul unu folosind o îmbinare exterioară stângă pentru a le uni cu o subinterogare. Rolul subinterogării este de a prelua coloanele definite din Tabelul 2. Apoi o unim cu Tabelul 1 cu condiția coloanei 2 din Tabelul 1 și coloanei 1 din subinterogare.

Exemplu practic:

Teoretic, pare mai puțin intuitiv, dar să luăm un scenariu din lumea reală, luând baza de date Sakila.

Să presupunem că vrem să recuperăm lista tuturor filmelor din baza de date și limbile respective. Limbile filmelor sunt stocate în tabelul de limbi, iar numele filmelor sunt stocate în tabelul de film.

Cu toate acestea, tabelul de film are o cheie străină numită coloana „language_id” din tabelul de limbi. Prin urmare, putem folosi o îmbinare subinterogare cu o îmbinare exterioară stângă pentru a uni cele două tabele împreună, așa cum este demonstrat în următoarea interogare:

SELECTează f.title, l.name AS limba
DIN filmul f
ÎNTREPRINDERE EXTERIOR STÂNGA (
SELECT limba_id, nume
DIN limbaj
) AS l
ON f.language_id = l.language_id;


În exemplul de interogare anterior, selectăm coloana de titlu din tabelul film și coloana de nume din tabelul de limbă.

Apoi folosim o subinterogare pentru a selecta language_id și coloana nume din tabelul de limbi. Următorul pas este să-l uniți cu tabelul film cu condiția ca language_id din tabelul film să fie egal cu language_id din tabelul language.

Pentru a ne asigura că toate filmele sunt incluse în rezultat, trebuie să folosim îmbinarea exterioară stângă care constă din toate rezultatele din tabelul din stânga care, în acest caz, este tabelul de film.

Un exemplu de ieșire este după cum urmează:


De asemenea, putem face același lucru cu o îmbinare exterioară dreaptă. Sintaxa este următoarea:

SELECTAȚI *
DIN tabelul 1
UNIRE EXTERIOR DREAPTA (
SELECT coloana1, coloana2
DIN tabelul 2
) subinterogare AS
ON table1.coloană3 = subinterogare.coloană1;


Aceasta se comportă în mod similar, dar include toate înregistrările din tabelul potrivit chiar dacă nu există înregistrări care se potrivesc.

Lucruri utile de știut

Este bine să înțelegeți că, deși îmbinările subinterogării sunt incredibil de utile și vă pot optimiza fluxul de lucru, utilizați-le cu prudență.

De exemplu, evitați să utilizați îmbinările subinterogării cu un set mare de date. Acest lucru se datorează faptului că pot returna înregistrările extinse care pot afecta performanța bazei de date.

Luați în considerare utilizarea instrumentelor de analiză a interogărilor înainte de a executa orice alăturare a subinterogărilor.

Concluzie

Acest tutorial a explorat elementele fundamentale ale lucrului cu subinterogări și alăturari subinterogări în SQL. La sfârșitul acestui tutorial, acum înțelegeți cum să lucrați cu îmbinări de subinterogare, de ce poate fi necesar să le utilizați și un exemplu practic despre cum vă pot ajuta în fluxul de lucru.