Resumé: i denne tutorial vil du lære, hvordan du bruger PostgreSQL LEFT JOIN
klausul til at vælge data fra flere tabeller.
Introduktion til PostgreSQL LEFT JOIN klausul
Antag at du har to tabeller: A
og B
.,
Hver række i tabellen A
kan have nul eller flere tilsvarende rækker i tabellen B
mens hver række i tabellen B
har én og kun én tilsvarende række i tabellen A
.
til At vælge data fra tabellen A
, som måske eller måske ikke er tilsvarende rækker i tabellen B
, kan du bruge LEFT JOIN
klausul.,
følgende udtalelse illustrerer LEFT JOIN
syntaks, der slutter sig til bordet A
tabel med B
:
Code language: SQL (Structured Query Language) (sql)
for At slutte sig til bordet A
tabel med B
tabel ved hjælp af en left join, skal du følge disse trin:
- Første, angive kolonner i begge tabeller, som du ønsker at vælge data i
SELECT
klausul. - Andet, angiv den venstre tabel (tabel
A
) iFROM
klausul., - Tredje, skal du angive den rigtige tabel (tabel
B
) iLEFT JOIN
klausul, og deltage tilstand efterON
søgeord.
LEFT JOIN
klausul begynder at vælge data fra venstre tabel. For hver række i venstre tabel sammenligner den værdien i kolonnen pka
med værdien af hver række i kolonnen fka
i højre tabel.,
hvis disse værdier er ens, opretter Left join-klausulen en ny række, der indeholder kolonner, der vises i SELECT
– klausulen og tilføjer denne række til resultatsættet.
Hvis disse værdier ikke er ens, opretter Left join-klausulen også en ny række, der indeholder kolonner, der vises i SELECT
– klausulen. Derudover udfylder den kolonnerne, der kommer fra højre tabel med NULL.,
følgende Venn-diagram illustrerer, hvordan den LEFT JOIN
klausul værker:
Bemærk at LEFT JOIN
er også nævnt som LEFT OUTER JOIN
.
PostgreSQL LEFT JOIN eksempler
Lad os se på følgende: film
og inventory
tabeller fra eksempeldatabasen.,
Hver række i film
tabel kan have nul eller flere rækker i inventory
tabel. Hver række iinventory
tabellen har en og kun en række i film
tabellen.
film_id
kolonne etablerer forbindelsen mellem film
og inventory
tabeller.,
Den følgende sætning bruger LEFT JOIN
klausulen til at deltage film
tabel med inventory
tabel:
Når en række fra film
tabellen ikke har en matchende linje i inventory
tabel, værdien af inventory_id
kolonne af denne række er NULL
.,
følgende erklæring tilføjer en WHERE
klausul for at finde de film, der ikke er i opgørelsen:
følgende erklæring returnerer det samme resultat., Forskellen er, at det bruger tabellen alias for at gøre forespørgslen mere kortfattet:
Hvis begge tabeller har samme kolonne navn, der bruges i ON
klausul, du kan bruge USING
syntaks som dette:
Denne teknik er nyttig, når du vil markere rækker fra en tabel, der ikke har matchende rækker i en anden tabel.