Alăturați trei tabele în SQL

Alaturati Trei Tabele In Sql



În bazele de date relaționale, sarcina de a prelua datele din mai multe tabele este extrem de comună. În funcție de rezultatul țintă, aceasta implică unirea mai multor tabele într-o singură unitate și preluarea datelor rezultate.

Când vine vorba de alăturari, cei mai mulți dintre noi lucrăm în principal cu limita de două tabele și altele. Cu toate acestea, este obișnuit să fie nevoie să unești trei tabele pentru a obține un aspect și o perspectivă mai semnificativă a datelor. Luați, de exemplu, locul în care doriți să preluați o listă de filme, inventarul de închiriere corespunzător și detaliile reale de închiriere. Fiecare dintre aceste unități, cum ar fi filmele, inventarul și detaliile de închiriere, sunt în tabele individuale.

În acest tutorial, vă vom ghida prin diferitele îmbinări și tehnici pe care le puteți utiliza pentru a uni trei tabele în SQL.







Cerințe:

În scopuri demonstrative, vom folosi MySQL versiunea 80 și baza de date eșantion Sakila. Pentru a urma, puteți descărca și configura baza de date Sakila pe serverul dvs. MySQL. Simțiți-vă liber să utilizați orice alt set de date pe care îl considerați aplicabil.



Tipuri de îmbinări în SQL

Înainte de a ajunge la aplicarea îmbinărilor, să începem prin a discuta diferitele tipuri de îmbinări care sunt disponibile în bazele de date SQL.



INNER JOIN

Primul tip de unire este un INNER JOIN. Acest tip de îmbinare returnează numai rândurile care conțin o valoare potrivită în ambele tabele. Este un tip foarte comun de unire și este cel mai simplist atunci când se unesc două mese.





Sintaxa este următoarea:

SELECTAȚI coloanele

DIN tabelul 1

INNER JOIN tabelul2 PE table1.coloană_nume = table2.coloană_nume;

LEFT JOIN

În cazul unui LEFT JOIN, returnează toate rândurile din tabelul din stânga și rândurile potrivite din tabelul din dreapta. Dacă nu există valori care se potrivesc din tabelul din dreapta, îmbinarea adaugă valorile NULL în locul lor.



Sintaxa este următoarea:

SELECTAȚI coloanele

DIN tabelul 1

LEFT JOIN tabelul2 PE table1.coloană_nume = table2.coloană_nume;

ÎNSCRIEȚI DREPT

După cum puteți ghici, RIGHT JOIN este opusul LEFT JOIN. Acest tip de îmbinări returnează toate rândurile din tabelul din dreapta și numai rândurile care se potrivesc din tabelul din stânga. Dacă nu există rânduri care se potrivesc pe tabelul din stânga, îmbinarea îi adaugă valorile NULL.

Următoarea este sintaxa unui RIGHT JOIN:

SELECTAȚI coloanele

DIN tabelul 1

RIGHT JOIN tabelul2 PE table1.coloană_nume = table2.coloană_nume;

UNIRE EXTERIOR COMPLET

Următorul tip de îmbinare pe care îl veți întâlni în bazele de date SQL este un FULL OUTER JOIN. Acest tip de îmbinare returnează toate rândurile atunci când există o potrivire fie în tabelele din dreapta, fie din stânga. Dacă nu există o valoare de potrivire în niciuna dintre cele două, returnează NULL pentru coloanele din tabel fără potrivire.

Următoarele demonstrează sintaxa unui FULL OUTER JOIN:

SELECTAȚI coloanele

DIN tabelul 1

FULL OUTER JOIN tabelul2 PE table1.coloană_nume = table2.coloană_nume;

Este bine să rețineți că nu toate motoarele de baze de date acceptă FULL OUTER JOINS. Pentru a realiza acest lucru, poate fi necesar să lucrați cu alte tipuri de JOINS sau subinterogări.

Exemple:

Să explorăm câteva exemple despre cum putem folosi aceste tipuri de îmbinări pentru a uni trei tabele în SQL.

Exemplul 1: Utilizarea INNER JOIN

Începem cu un INNER JOIN. Să presupunem că vrem să recuperăm o listă de filme, inventarul de închiriere și detaliile de închiriere corespunzătoare.

Putem folosi mai multe INNER JOINS pe tabelele asociate, așa cum se arată în următorul exemplu:

SELECTAȚI

film.title,

inventory.inventory_id,

inchiriere.data_inchiriere

DIN

film

Inventarul INNER JOIN PE

film.film_id = inventar.film_id

Închiriere INNER JOIN PE

inventory.inventory_id = inchiriere.inventory_id;

În exemplul de interogare dat, începem prin a uni tabelele film și inventar pe baza coloanei „film_id”. Apoi luăm setul rezultat și îl unim cu tabelul de închiriere bazat pe coloana „inventory_id”.

Acest lucru ne asigură că unim trei mese cu un INNER JOIN de bază. Setul rezultat este următorul:

Exemplul 2: Utilizarea INNER JOIN și LEFT JOIN

Să spunem că acum vrem lista de filme, lista inventarelor de închiriere (dacă există) și detaliile de închiriere asociate.

De asemenea, vrem să ne asigurăm că, chiar dacă un film nu are un inventar de închiriere, îl includem în continuare în rezultat. Aici intră în joc INNER JOIN și LEFT JOIN.

Luați în considerare următorul exemplu:

SELECTAȚI

film.title,

inventory.inventory_id,

inchiriere.data_inchiriere

DIN

film

Inventarul INNER JOIN PE

film.film_id = inventar.film_id

Închiriere LEFT JOIN PE

inventory.inventory_id = inchiriere.inventory_id;

În acest exemplu, folosim un INNER JOIN pentru a alătura filmului și tabelului de inventar pentru a ne asigura că obținem titlurile cu inventarul disponibil. Apoi folosim LEFT JOIN pentru a ne alătura tabelului de închiriere pentru a obține detaliile de închiriere dacă sunt disponibile și NULL pentru orice titlu care nu are un istoric de închiriere.

Setul rezultat este următorul:

Concluzie

În acest tutorial, am învățat despre diferitele tipuri de JOINS în SQL, cum funcționează și cum le putem folosi pentru a combina trei tabele.