SQL Outer Join

Sql Outer Join



Det säger sig självt att joins är en av de mest identifierbara egenskaperna hos relationsdatabaser. Joins tillåter oss att kombinera data från en eller flera tabeller baserat på ett relaterat villkor för att skapa en sammanhängande dataoperation.

Det finns olika typer av joins i SQL, var och en med ett unikt sätt att hantera data från de deltagande tabellerna eller den resulterande uppsättningen. En av de vanligaste typerna av join i SQL är en OUTER JOIN.







En OUTTER JOIN i SQL hämtar alla matchande rader från de inblandade tabellerna såväl som de omatchade raderna från en eller båda tabellerna. Det är praktiskt när du har att göra med tabeller som innehåller NULL-värden eller saknade uppsättningar.



Låt oss utforska ytterligare vad dessa kopplingar gör, hur de fungerar och hur vi kan använda dem i en SQL-databas.



Krav:

För den här handledningen kommer vi att arbeta med MySQL 8.0 och använda exempeldatabasen Sakila. Men använd gärna någon annan datauppsättning som du anser vara tillämplig.





Typer av yttre förband

Det finns tre huvudtyper av OUTER JOINS i SQL. Dessa typer av OUTTER JOINS inkluderar:

  1. Vänster YTTRE FÖRENAR

  2. I fallet med LEFT OUTER JOINS, hämtar joinen alla rader från den vänstra tabellen och endast de matchande raderna från den högra tabellen. Om det inte finns några matchande rader från den högra tabellen, returnerar joinen NULL-värdena för kolumnerna i den högra tabellen.



  3. Höger YTTRE FÖRENAR

  4. Detta liknar en RIGHT OUTER JOIN. Den hämtar dock alla rader från den högra tabellen men bara de matchande raderna från den vänstra tabellen. Om det inte finns några matchande rader från den vänstra tabellen, inkluderar kopplingen NULL-värdena för kolumnerna i den vänstra tabellen.

  5. HELA YTTRE FÖRENAR

  6. Slutligen har vi FULLSTÄNDIG YTTRE JOINS. Denna typ av sammanfogning kombinerar både HÖGER och VÄNSTER yttre sammanfogningar. Som ett resultat hämtar joinen alla rader när det finns en matchning i antingen vänster eller höger tabell. Om det inte finns någon matchning returnerar joinen NULL-värdena för kolumnerna från tabellen utan matchning.

Syntax för SQL OUTER JOIN

Följande uttrycker syntaxen för en SQL OUTER JOIN. Det är dock bra att komma ihåg att syntaxen kan variera något beroende på måldatabasmotorn.

Följande är en allmän struktur:

VÄLJ kolumner
FRÅN tabell 1
[VÄNSTER | HÖGER | FULL] OUTTER JOIN tabell2
PÅ tabell1.kolumnnamn = tabell2.kolumnnamn;

Syntaxen för en OUTTER JOIN i SQL är ganska självförklarande.

Exempel:

Låt oss titta på några exempel på hur vi kan tillämpa de olika typerna av OUTER JOINS i SQL.

Som vi nämnde kommer vi att använda Sakila-exempeldatabasen för demonstration. I det här fallet använder vi tabellerna 'kund' och 'betalning'.

Exempel 1: LEFT OUTER JOIN

Låt oss börja med en OUTTER JOIN. Anta att vi vill hämta all kundinformation tillsammans med deras betalningsinformation, om tillgänglig.

Detta gör en LEFT OUTER JOIN tillämplig då vi vill ha all kundinformation (till vänster) och betalningsinformation om tillgänglig (höger).

Om kunden inte har gjort någon betalning kommer joinen att visa NULL-värdena för de betalningsrelaterade kolumnerna.

Ett exempel är följande:

VÄLJ
c.customer_id,
c.first_name,
c.efternamn,
p.belopp,
p.betalningsdatum
FRÅN
kund c
LEFT OUTER JOIN betalning sid

c.customer_id = p.customer_id;

I den givna frågan inkluderar vi kolumnerna 'customer_id', 'first_name' och 'last_name' från tabellen 'customer'. Vi inkluderar även beloppet och 'betalningsdatum' från tabellen 'betalning'.

Vi utför sedan en LEFT OUTER JOIN mellan 'customer' och 'payment'-tabellerna baserat på 'customer_id'.

Dessa är alla kunder (oavsett om betalning gjorts eller inte) tillsammans med deras betalningsinformation (om någon).

Ett exempel på utdata är följande:

Exempel 2: HÖGER YTTRE JOIN

Låt oss nu gå vidare till HÖGER YTTRE JOIN. Anta att vi vill inkludera all betalningsinformation och tillhörande kund i detta fall, om någon.

I det här fallet, om en betalning görs av en kund, kommer anslutningen att visa kundens uppgifter. Om det finns en betalning utan associerad kund kommer den att visa NULL-värdena för kundrelaterade kolumner.

VÄLJ
c.customer_id,
c.first_name,
c.efternamn,
p.belopp,
p.betalningsdatum
FRÅN
kund c
RIGHT OUTER JOIN betalning sid

c.customer_id = p.customer_id;

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

Exempel 3: FULL YTTRE JOIN

EN FULL OUTTER JOIN hämtar däremot all kundinformation och betalning. Detta inkluderar alla kunder och alla betalningar och visar NULL-värdena där det inte finns någon matchning mellan tabellerna.

VÄLJ
c.customer_id,
c.first_name,
c.efternamn,
p.belopp,
p.betalningsdatum
FRÅN
kund c
FULL YTTRE JOIN betalning sid

c.customer_id = p.customer_id;

Det är bra att komma ihåg att MySQL inte stöder en FULL YTTRE JOIN. Du måste göra lite jiujitsu-magi med LEFT JOIN, UNION och RIGHT JOIN. Ganska irriterande, kan vi tillägga.

Slutsats

I den här handledningen lärde vi oss allt om OUTER JOINS. Vi lärde oss vad som är en OUTER JOIN i SQL, vilka typer av OUTER JOINS och exemplen på hur man använder dessa typer av OUTER JOINS.