Bli med tre tabeller i SQL

Bli Med Tre Tabeller I Sql



I relasjonsdatabaser er oppgaven med å hente data fra flere tabeller ekstremt vanlig. Avhengig av målresultatet innebærer dette å slå sammen flere tabeller til en enkelt enhet og hente de resulterende dataene.

Når det kommer til joins, jobber de fleste av oss hovedsakelig med grensen på to bord og slikt. Det er imidlertid vanlig å måtte slå sammen tre tabeller for å få en mer meningsfull datalayout og innsikt. Ta for eksempel hvor du ønsker å hente en liste over filmer, deres tilhørende leiebeholdning og de faktiske leiedetaljene. Hver av disse enhetene som filmer, inventar og leiedetaljer er i individuelle tabeller.

I denne opplæringen vil vi lede deg gjennom de ulike sammenføyningene og teknikkene du kan bruke for å slå sammen tre tabeller i SQL.







Krav:

For demonstrasjonsformål vil vi bruke MySQL versjon 80 og Sakila-eksempeldatabasen. For å følge med kan du laste ned og sette opp Sakila-databasen i MySQL-serveren din. Bruk gjerne ethvert annet datasett som du mener er aktuelt.



Typer sammenføyninger i SQL

Før vi kommer til anvendelsen av sammenføyningene, la oss starte med å diskutere de ulike typene sammenføyninger som er tilgjengelige i SQL-databaser.



INDRE BLI MED

Den første typen join er en INNER JOIN. Denne typen sammenføyning returnerer bare radene som inneholder en samsvarende verdi i begge tabellene. Det er en veldig vanlig type sammenføyning og er den mest forenklede når man slår sammen to bord.





Syntaksen er som følger:

VELG kolonner

FRA tabell 1

INNER JOIN-tabell2 tabell1.kolonnenavn = tabell2.kolonnenavn;

VENSTRE BLI MED

I tilfellet med en LEFT JOIN, returnerer den alle radene fra den venstre tabellen og de samsvarende radene fra den høyre tabellen. Hvis det ikke er noen samsvarende verdier fra den høyre tabellen, legger sammenføyningen NULL-verdiene i stedet.



Syntaksen er som følger:

VELG kolonner

FRA tabell 1

VENSTRE BLI MED tabell2 tabell1.kolonnenavn = tabell2.kolonnenavn;

HØYRE BLI MED

Som du kan gjette, er RIGHT JOIN det motsatte av LEFT JOIN. Denne typen sammenføyninger returnerer alle radene fra den høyre tabellen og bare de samsvarende radene fra den venstre tabellen. Hvis det ikke er noen samsvarende rader på den venstre tabellen, legger sammenføyningen NULL-verdiene til den.

Følgende er syntaksen til en RIGHT JOIN:

VELG kolonner

FRA tabell 1

HØYRE BLI MED tabell2 tabell1.kolonnenavn = tabell2.kolonnenavn;

FULL YTTRE FØLGING

Den neste typen sammenføyning du vil møte i SQL-databaser er en FULL YTRE JOIN. Denne typen sammenføyning returnerer alle rader når det er samsvar i enten høyre eller venstre tabell. Hvis det ikke er noen samsvarende verdi i noen av de to, returnerer den NULL for kolonnene fra tabellen uten samsvar.

Følgende demonstrerer syntaksen til en FULL YTRE JOIN:

VELG kolonner

FRA tabell 1

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

Det er greit å huske på at ikke alle databasemotorer støtter FULL YTRE JOINS. For å oppnå dette må du kanskje jobbe med andre typer JOINS eller underspørringer.

Eksempler:

La oss utforske noen eksempler på hvordan vi kan bruke disse typene sammenføyninger til å slå sammen tre tabeller i SQL.

Eksempel 1: Bruk av INNER JOIN

Vi starter med en INDRE JOIN. Anta at vi ønsker å hente en liste over filmer, leiebeholdningen og tilhørende leiedetaljer.

Vi kan bruke flere INNER JOINS på de tilknyttede tabellene som vist i følgende eksempel:

PLUKKE UT

film.title,

inventory.inventory_id,

rental.rental_date

FRA

film

INNER JOIN inventar

film.film_id = inventory.film_id

INNER JOIN utleie

inventory.inventory_id = rental.inventory_id;

I den gitte eksempelspørringen starter vi med å slå sammen film- og inventartabellene basert på 'film_id'-kolonnen. Vi tar deretter det resulterende settet og slår det sammen med leietabellen basert på kolonnen 'inventory_id'.

Dette sikrer at vi slår sammen tre bord med en grunnleggende INNER JOIN. Det resulterende settet er som følger:

Eksempel 2: Bruk av INNER JOIN og LEFT JOIN

La oss si at vi nå vil ha listen over filmer, listen over leiebeholdninger (hvis det er noen) og tilhørende leiedetaljer.

Vi ønsker også å forsikre oss om at selv om en film ikke har et utleielager, inkluderer vi det i resultatet. Det er her INNER JOIN og LEFT JOIN kommer inn i bildet.

Tenk på følgende eksempel:

PLUKKE UT

film.title,

inventory.inventory_id,

rental.rental_date

FRA

film

INNER JOIN inventar

film.film_id = inventory.film_id

VENSTRE BLI MED utleie

inventory.inventory_id = rental.inventory_id;

I dette eksemplet bruker vi en INNER JOIN for å bli med i film- og inventartabellen for å sikre at vi får titlene med tilgjengelig beholdning. Vi bruker deretter LEFT JOIN for å bli med i leietabellen for å hente leiedetaljene hvis tilgjengelig og NULL for enhver tittel som ikke har en leiehistorikk.

Det resulterende settet er som følger:

Konklusjon

I denne opplæringen lærte vi om de ulike typene JOINS i SQL, hvordan de fungerer, og hvordan vi kan bruke dem til å kombinere tre tabeller.