Gå med tre tabeller i SQL

Ga Med Tre Tabeller I Sql



I relationsdatabaser är uppgiften att hämta data från flera tabeller extremt vanlig. Beroende på målresultatet innebär detta att flera tabeller sammanfogas till en enda enhet och att de resulterande data hämtas.

När det kommer till joins arbetar de flesta av oss främst med gränsen på två bord och så. Det är dock vanligt att man behöver sammanfoga tre tabeller för att få en mer meningsfull datalayout och insikt. Ta till exempel där du vill hämta en lista över filmer, deras motsvarande hyresinventering och de faktiska hyrdetaljerna. Var och en av dessa enheter, såsom filmer, inventarier och hyresdetaljer, finns i individuella tabeller.

I den här självstudien kommer vi att gå igenom de olika sammanfogningar och tekniker som du kan använda för att sammanfoga tre tabeller i SQL.







Krav:

För demonstrationsändamål kommer vi att använda MySQL version 80 och Sakila exempeldatabasen. För att följa med kan du ladda ner och ställa in Sakila-databasen i din MySQL-server. Använd gärna andra datauppsättningar som du anser vara tillämpliga.



Typer av kopplingar i SQL

Innan vi kommer till tillämpningen av joins, låt oss börja med att diskutera de olika typerna av joins som finns tillgängliga i SQL-databaser.



INRE KOPPLING

Den första typen av koppling är en INNER JOIN. Den här typen av koppling returnerar endast de rader som innehåller ett matchande värde i båda tabellerna. Det är en mycket vanlig typ av sammanfogning och är den mest förenklade när man sammanfogar två bord.





Syntaxen är som följer:

VÄLJ kolumner

FRÅN tabell 1

INNER JOIN bord2 tabell1.kolumnnamn = tabell2.kolumnnamn;

VÄNSTER GÅ MED

I fallet med en LEFT JOIN returnerar den alla rader från den vänstra tabellen och de matchade raderna från den högra tabellen. Om det inte finns några matchande värden från den högra tabellen lägger joinen till NULL-värdena i deras ställe.



Syntaxen är som följer:

VÄLJ kolumner

FRÅN tabell 1

VÄNSTER JOIN tabell2 tabell1.kolumnnamn = tabell2.kolumnnamn;

HÖGER GÅ MED

Som du kan gissa är RIGHT JOIN motsatsen till LEFT JOIN. Denna typ av kopplingar returnerar alla rader från den högra tabellen och endast de matchande raderna från den vänstra tabellen. Om det inte finns några matchande rader i den vänstra tabellen lägger joinen till NULL-värdena till den.

Följande är syntaxen för en RIGHT JOIN:

VÄLJ kolumner

FRÅN tabell 1

HÖGER JOIN tabell2 tabell1.kolumnnamn = tabell2.kolumnnamn;

FULLSTÄNDIG YTTRE JOIN

Nästa typ av join som du kommer att stöta på i SQL-databaser är en FULL OUTER JOIN. Denna typ av koppling returnerar alla rader när det finns en matchning i antingen höger eller vänster tabell. Om det inte finns något matchande värde i någon av de två, returnerar det NULL för kolumnerna från tabellen utan matchningen.

Följande visar syntaxen för en FULL OUTER JOIN:

VÄLJ kolumner

FRÅN tabell 1

FULL YTTRE JOIN tabell2 tabell1.kolumnnamn = tabell2.kolumnnamn;

Det är bra att komma ihåg att inte alla databasmotorer stöder FULL OUTER JOINS. För att uppnå detta kan du behöva arbeta med andra typer av JOINS eller underfrågor.

Exempel:

Låt oss utforska några exempel på hur vi kan använda dessa typer av kopplingar för att sammanfoga tre tabeller i SQL.

Exempel 1: Använda INNER JOIN

Vi börjar med en INRE JOIN. Anta att vi vill hämta en lista över filmer, hyresinventeringen och motsvarande hyrinformation.

Vi kan använda flera INNER JOINS på de tillhörande tabellerna som visas i följande exempel:

VÄLJ

film.title,

inventory.inventory_id,

rental.rental_date

FRÅN

filma

INNER JOIN inventering

film.film_id = inventory.film_id

INNER JOIN uthyrning

inventory.inventory_id = rental.inventory_id;

I den givna exempelfrågan börjar vi med att sammanfoga film- och inventeringstabellerna baserat på kolumnen 'film_id'. Vi tar sedan den resulterande uppsättningen och sammanfogar den med hyrestabellen baserat på kolumnen 'inventory_id'.

Detta säkerställer att vi sammanfogar tre bord med en grundläggande INNER JOIN. Den resulterande uppsättningen är som följer:

Exempel 2: Använda INNER JOIN och LEFT JOIN

Låt oss säga att vi nu vill ha listan över filmer, listan över hyresinventeringar (om det finns några) och tillhörande hyresdetaljer.

Vi vill också försäkra oss om att även om en film inte har ett hyrlager så inkluderar vi det i resultatet. Det är här INNER JOIN och LEFT JOIN kommer in i bilden.

Tänk på följande exempel:

VÄLJ

film.title,

inventory.inventory_id,

rental.rental_date

FRÅN

filma

INNER JOIN inventering

film.film_id = inventory.film_id

LEFT JOIN uthyrning

inventory.inventory_id = rental.inventory_id;

I det här exemplet använder vi en INNER JOIN för att gå med i film- och inventeringstabellen för att säkerställa att vi får titlarna med det tillgängliga lagret. Vi använder sedan LEFT JOIN för att gå med i hyrestabellen för att hämta hyresinformationen om tillgänglig och NULL för alla titlar som inte har en hyreshistorik.

Den resulterande uppsättningen är som följer:

Slutsats

I den här handledningen lärde vi oss om de olika typerna av JOINS i SQL, hur de fungerar och hur vi kan använda dem för att kombinera tre tabeller.