SQL Outer Join

Sql Outer Join



Det sier seg selv at sammenføyninger er en av de mest identifiserbare egenskapene til relasjonsdatabaser. Sammenføyninger lar oss kombinere dataene fra én eller flere tabeller basert på en relatert betingelse for å skape en sammenhengende dataoperasjon.

Det finnes ulike typer sammenføyninger i SQL, hver med en unik måte for hvordan den håndterer dataene fra de deltakende tabellene eller det resulterende settet. En av de vanligste typene join i SQL er en OUTER JOIN.







En OUTTER JOIN i SQL henter alle samsvarende rader fra de involverte tabellene, så vel som de ikke-matchede radene fra en eller begge tabellene. Det kommer godt med når du har å gjøre med tabeller som inneholder NULL-verdier eller manglende sett.



La oss utforske nærmere hva disse sammenføyningene gjør, hvordan de fungerer, og hvordan vi kan bruke dem i en SQL-database.



Krav:

For denne opplæringen vil vi jobbe med MySQL 8.0 og bruke Sakila-eksempeldatabasen. Bruk imidlertid ethvert annet datasett som du mener er aktuelt.





Typer ytre skjøter

Det er tre hovedtyper av OUTER JOINS i SQL. Disse typene YTRE JOINS inkluderer:

  1. Venstre YTRE JOIN

  2. I tilfellet med LEFT OUTER JOINS, henter sammenføyningen alle radene fra venstre tabell og kun de samsvarende radene fra høyre tabell. Hvis det ikke er noen samsvarende rader fra den høyre tabellen, returnerer sammenføyningen NULL-verdiene for kolonnene i den høyre tabellen.



  3. Høyre YTRE SKJØTER

  4. Dette ligner på en RIGHT YTRE JOIN. Den henter imidlertid alle radene fra den høyre tabellen, men bare de samsvarende radene fra den venstre tabellen. Hvis det ikke er noen samsvarende rader fra den venstre tabellen, inkluderer sammenføyningen NULL-verdiene for kolonnene i den venstre tabellen.

  5. FULL YTRE SKJØTTER

  6. Til slutt har vi FULLSTENDIG YTRE SKJØTTER. Denne typen sammenføyninger kombinerer både HØYRE og VENSTRE ytre skjøter. Som et resultat henter sammenføyningen alle rader når det er samsvar i enten venstre eller høyre tabell. Hvis det ikke er samsvar, returnerer sammenføyningen NULL-verdiene for kolonnene fra tabellen uten samsvar.

Syntaks for SQL OUTER JOIN

Det følgende uttrykker syntaksen til en SQL OUTER JOIN. Det er imidlertid greit å huske på at syntaksen kan variere litt avhengig av måldatabasemotoren.

Følgende er en generell struktur:

VELG kolonner
FRA tabell 1
[VENSTRE | HØYRE | FULL] YTRE JOIN-tabell2
PÅ tabell1.kolonnenavn = tabell2.kolonnenavn;

Syntaksen til en OUTTER JOIN i SQL er ganske selvforklarende.

Eksempler:

La oss se på noen eksempler på hvordan vi kan bruke de ulike typene OUTER JOINS i SQL.

Som vi nevnte, vil vi bruke Sakila-prøvedatabasen for demonstrasjon. I dette tilfellet bruker vi 'kunde' og 'betaling'-tabellene.

Eksempel 1: VENSTRE YTRE JOIN

La oss starte med en YTRE JOIN. Anta at vi ønsker å hente all kundeinformasjon sammen med betalingsinformasjonen deres, hvis tilgjengelig.

Dette gjør en LEFT OUTER JOIN gjeldende da vi ønsker all kundeinformasjon (til venstre) og betalingsinformasjon hvis tilgjengelig (til høyre).

Hvis kunden ikke har foretatt noen betaling, vil sammenføyningen vise NULL-verdiene for de betalingsrelaterte kolonnene.

Et eksempel er som følger:

PLUKKE UT
c.customer_id,
c.first_name,
c.etternavn,
p.beløp,
p.betalingsdato
FRA
kunde c
VENSTRE YTRE JOIN betaling s

c.customer_id = p.customer_id;

I den gitte spørringen inkluderer vi kolonnene «kunde_id», «fornavn» og «etternavn» fra «kunde»-tabellen. Vi inkluderer også beløpet og 'betalingsdato' fra 'betaling'-tabellen.

Vi utfører deretter en LEFT OUTER JOIN mellom 'customer' og 'payment'-tabellene basert på 'customer_id'.

Dette er alle kundene (enten betaling er utført eller ikke) sammen med betalingsopplysningene deres (hvis noen).

Et eksempelutgang er som følger:

Eksempel 2: HØYRE YTRE SKJØT

La oss nå gå videre til HØYRE YTRE JOIN. Anta at vi ønsker å inkludere all betalingsinformasjon og den tilhørende kunden i dette tilfellet, hvis noen.

I dette tilfellet, hvis en betaling foretas av en kunde, vil sammenføyningen vise kundens detaljer. Hvis det er en betaling uten tilknyttet kunde, vil den vise NULL-verdiene for kunderelaterte kolonner.

PLUKKE UT
c.customer_id,
c.first_name,
c.etternavn,
p.beløp,
p.betalingsdato
FRA
kunde c
RIGHT YTRE JOIN betaling s

c.customer_id = p.customer_id;

Det resulterende settet er som følger:

Eksempel 3: FULL YTRE SKJØT

EN FULL YTRE JOIN, derimot, henter all kundeinformasjon og betaling. Dette inkluderer alle kunder og alle betalinger og viser NULL-verdiene der det ikke er samsvar mellom tabellene.

PLUKKE UT
c.customer_id,
c.first_name,
c.etternavn,
p.beløp,
p.betalingsdato
FRA
kunde c
FULL YTTERFORSLAG betaling s

c.customer_id = p.customer_id;

Det er greit å huske på at MySQL ikke støtter en FULL YTRE JOIN. Du må gjøre litt jiujitsu-magi med LEFT JOIN, UNION og RIGHT JOIN. Ganske irriterende, kan vi legge til.

Konklusjon

I denne opplæringen lærte vi alt om YTRE JOINS. Vi lærte hva som er en OUTER JOIN i SQL, typene OUTER JOINS, og eksemplene på hvordan man bruker disse typene OUTER JOINS.