Oppsummering: i denne opplæringen vil du lære hvordan å bruke PostgreSQL LEFT JOIN
klausulen for å velge data fra flere tabeller.
Introduksjon til PostgreSQL LEFT JOIN-setningsdel
Tenk deg at du har to tabeller: A
og B
.,
Hver rad i tabellen A
kan ha null eller mange tilsvarende radene i tabellen B
mens hver rad i tabellen B
har ett og bare ett tilsvarende raden i tabellen A
.
for Å velge data fra tabellen A
som kan eller ikke kan ha tilsvarende radene i tabellen B
, bruker du LEFT JOIN
klausulen.,
følgende uttalelse illustrerer LEFT JOIN
syntaks som blir bordet A
tabell med B
:
Code language: SQL (Structured Query Language) (sql)
for Å bli med på bordet A
tabell med B
tabell ved hjelp av en venstre delta, må du følge disse trinnene:
- Første, angi kolonner i begge tabellene som du vil bruke for å velge data i
SELECT
klausulen. - Annet, spesifiser venstre tabellen (tabell
A
) iFROM
klausulen., - Tredje, må du angi riktig tabell (tabell
B
) iLEFT JOIN
klausulen og delta tilstand etterON
søkeord.
LEFT JOIN
klausulen starter velge data fra venstre bordet. For hver rad i den venstre bordet, og det sammenligner verdien i pka
kolonne med verdien av hver rad i fka
kolonnen på høyre bord.,
Hvis disse verdiene er like, venstre join-setningsdel skaper en ny rad som inneholder kolonner som vises i SELECT
klausulen, og legger denne raden til resultat.
I tilfelle at disse verdiene er ikke like, venstre join-setningsdel oppretter også en ny rad som inneholder kolonner som vises i SELECT
klausulen. I tillegg, det fyller kolonner som kommer fra høyre bord med en NULL.,
følgende Venn-diagram illustrerer hvordan LEFT JOIN
klausulen fungerer:
Merk at LEFT JOIN
er også referert til som LEFT OUTER JOIN
.
PostgreSQL VENSTRE BLI med eksempler
La oss se på følgende film
og inventory
tabeller fra prøven database.,
Hver rad i film
tabell kan ha null eller mange rader i inventory
tabell. Hver rad i inventory
bordet har én og bare én rad i film
tabell.
film_id
kolonne etablerer koblingen mellom film
og inventory
tabeller.,
følgende uttalelse bruker LEFT JOIN
klausulen til å bli med film
tabell med inventory
tabell:
Når en rad fra film
bordet ikke har en matchende rad i inventory
bordet, verdien av inventory_id
kolonne på denne raden er NULL
.,
følgende uttalelse legger til en WHERE
klausulen for å finne filmer som ikke er på lager:
følgende uttalelse gir samme resultat., Forskjellen er at den bruker tabellen aliaser for å gjøre søket mer konsis:
Hvis begge tabellene har den samme kolonnen navn brukt i ON
klausulen, du kan bruke USING
syntaks som dette:
Denne teknikken er nyttig når du ønsker å velge rader fra en tabell som ikke har matchende rader i en annen tabell.