Spojite tri tablice u SQL-u

Spojite Tri Tablice U Sql U



U relacijskim bazama podataka zadatak dohvaćanja podataka iz više tablica iznimno je čest. Ovisno o ciljnom rezultatu, to uključuje spajanje više tablica u jednu jedinicu i dohvaćanje rezultirajućih podataka.

Što se tiče spojeva, većina nas uglavnom radi s ograničenjem od dvije tablice i slično. Međutim, uobičajeno je da je potrebno spojiti tri tablice kako bi se dobio smisleniji raspored podataka i uvid. Uzmimo za primjer gdje želite dohvatiti popis filmova, njihov odgovarajući inventar za posudbu i stvarne pojedinosti o posudbi. Svaka od ovih jedinica, kao što su filmovi, inventar i pojedinosti o najmu, nalaze se u zasebnim tablicama.

U ovom vodiču provest ćemo vas kroz različite spojeve i tehnike koje možete koristiti za spajanje triju tablica u SQL-u.







Zahtjevi:

U svrhu demonstracije koristit ćemo MySQL verziju 80 i Sakila oglednu bazu podataka. Da biste slijedili, možete preuzeti i postaviti Sakila bazu podataka na svom MySQL poslužitelju. Slobodno upotrijebite bilo koji drugi skup podataka koji smatrate primjenjivim.



Vrste spajanja u SQL-u

Prije nego što dođemo do primjene spojeva, počnimo s raspravom o različitim vrstama spojeva koji su dostupni u SQL bazama podataka.



UNUTARNJI SPOJ

Prva vrsta spajanja je INNER JOIN. Ova vrsta spajanja vraća samo retke koji sadrže podudarnu vrijednost u objema tablicama. To je vrlo čest tip spajanja i najjednostavniji je pri spajanju dviju tablica.





Sintaksa je sljedeća:

SELECT stupce

IZ tablice1

UNUTARNJI SPOJ tablica2 NA tablica1.naziv_stupca = tablica2.naziv_stupca;

LIJEVO PRIDRUŽI

U slučaju LEFT JOIN-a, vraća sve retke iz lijeve tablice i podudarne retke iz desne tablice. Ako nema odgovarajućih vrijednosti iz desne tablice, spajanje dodaje NULL vrijednosti na njihovo mjesto.



Sintaksa je sljedeća:

SELECT stupce

IZ tablice1

LEFT JOIN table2 NA tablica1.naziv_stupca = tablica2.naziv_stupca;

PRAVO SE PRIDRUŽI

Kao što možete pretpostaviti, DESNI JOIN je suprotan LIJEVOM JOIN-u. Ova vrsta spajanja vraća sve retke iz desne tablice i samo odgovarajuće retke iz lijeve tablice. Ako u lijevoj tablici nema odgovarajućih redaka, spajanje joj dodaje NULL vrijednosti.

Sljedeća je sintaksa RIGHT JOIN-a:

SELECT stupce

IZ tablice1

RIGHT JOIN table2 NA tablica1.naziv_stupca = tablica2.naziv_stupca;

POTPUNI VANJSKI SPOJ

Sljedeći tip spajanja s kojim ćete se susresti u SQL bazama podataka je FULL OUTER JOIN. Ova vrsta spajanja vraća sve retke kada postoji podudaranje u desnoj ili lijevoj tablici. Ako nema podudarne vrijednosti ni u jednom od dva, vraća NULL za stupce iz tablice bez podudaranja.

Sljedeće demonstrira sintaksu FULL OUTER JOIN-a:

SELECT stupce

IZ tablice1

FULL OUTER JOIN table2 NA tablica1.naziv_stupca = tablica2.naziv_stupca;

Dobro je imati na umu da svi pogoni baze podataka ne podržavaju FULL OUTER JOINS. Da biste to postigli, možda ćete morati raditi s drugim vrstama JOINS ili podupita.

Primjeri:

Istražimo neke primjere kako možemo koristiti ove vrste spajanja za spajanje triju tablica u SQL-u.

Primjer 1: Korištenje INNER JOIN

Počinjemo s INNER JOIN-om. Pretpostavimo da želimo dohvatiti popis filmova, inventar iznajmljivanja i odgovarajuće pojedinosti o iznajmljivanju.

Možemo koristiti više INNER JOIN-ova na povezanim tablicama kao što je prikazano u sljedećem primjeru:

IZABERI

naslov filma,

inventory.inventory_id,

iznajmljivanje.datum_iznajmljivanja

IZ

film

INNER JOIN inventar NA

film.film_id = inventar.film_id

INNER JOIN najam NA

inventory.inventory_id = najam.inventory_id;

U danom primjeru upita počinjemo spajanjem tablica filma i inventara na temelju stupca 'film_id'. Zatim uzimamo dobiveni skup i pridružujemo ga tablici za iznajmljivanje na temelju stupca 'inventory_id'.

Ovo osigurava spajanje triju tablica osnovnim INNER JOIN-om. Rezultirajući skup je sljedeći:

Primjer 2: Korištenje INNER JOIN i LEFT JOIN

Recimo da sada želimo popis filmova, popis inventara za iznajmljivanje (ako postoji) i pridružene pojedinosti o najmu.

Također želimo biti sigurni da čak i ako film nema inventar za posudbu, i dalje ga uključujemo u rezultat. Ovo je mjesto gdje INNER JOIN i LEFT JOIN stupaju na scenu.

Razmotrite sljedeći primjer:

IZABERI

naslov filma,

inventory.inventory_id,

iznajmljivanje.datum_iznajmljivanja

IZ

film

INNER JOIN inventar NA

film.film_id = inventar.film_id

LEFT JOIN iznajmljivanje NA

inventory.inventory_id = najam.inventory_id;

U ovom primjeru koristimo INNER JOIN za spajanje tablice filmova i inventara kako bismo osigurali dobivanje naslova s ​​dostupnim inventarom. Zatim koristimo LEFT JOIN za pridruživanje tablici za iznajmljivanje kako bismo dohvatili pojedinosti o najmu ako su dostupni i NULL za bilo koji naslov koji nema povijest posudbe.

Rezultirajući skup je sljedeći:

Zaključak

U ovom vodiču naučili smo o raznim vrstama JOINS u SQL-u, kako rade i kako ih možemo koristiti za kombiniranje triju tablica.