Oversigt :i denne vejledning lærer du, hvordan du bruger SQLite LEFT JOIN klausul for at forespørge data fra flere tabeller.
Introduktion til SQLite LEFT JOIN klausul
Svarende til INNER JOIN klausulen, LEFT JOIN klausul er en valgfri klausul af SELECT udmelding. Du bruger LEFT JOIN klausul for at forespørge data fra flere relaterede tabeller.
Antag, at vi har to tabeller:A og B.
- A har m- og f-kolonner.
- B har n og f kolonner.
For at udføre joinforbindelse mellem A og B ved hjælp af LEFT JOIN klausul, bruger du følgende sætning:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;Code language: SQL (Structured Query Language) (sql)
Udtrykket A.f = B.f er et betinget udtryk. Udover lighedsoperatoren (=) kan du bruge andre sammenligningsoperatorer såsom større end (>), mindre end (<) osv.
Udsagnet returnerer et resultatsæt, der inkluderer:
- Rækker i tabel A (venstre tabel), der har tilsvarende rækker i tabel B.
- Rækker i tabel A-tabellen og rækker i tabel B fyldt med
NULLværdier i tilfælde af, at rækken fra tabel A ikke har nogen tilsvarende rækker i tabel B.
Med andre ord er alle rækker i tabel A inkluderet i resultatsættet, uanset om der er matchende rækker i tabel B eller ej.
Hvis du har en WHERE klausul i sætningen, search_condition i WHERE klausulen anvendes efter matchningen af LEFT JOIN klausul afsluttes.
Se følgende illustration af LEFT JOIN klausul mellem A- og B-tabellerne.
Alle rækker i tabel A er inkluderet i resultatsættet.
Fordi den anden række (a2,2) har ikke en tilsvarende række i tabel B, LEFT JOIN klausul opretter en falsk række udfyldt med NULL .
Følgende Venn-diagram illustrerer LEFT JOIN klausul.
Det bemærkes, at LEFT OUTER JOIN er det samme som LEFT JOIN .
SQLite LEFT JOIN eksempler
Vi vil bruge artists og albums tabeller i eksempeldatabasen til demonstration.
Et album tilhører én kunstner. En kunstner kan dog have nul eller flere album.
For at finde kunstnere, der ikke har nogen album, ved at bruge LEFT JOIN klausul, vælger vi kunstnere og deres tilsvarende album. Hvis en kunstner ikke har nogen album, værdien af AlbumId kolonnen er NULL.
For at vise de kunstnere, der ikke har nogen album først, har vi to valgmuligheder:
- Brug først
ORDER BYklausul for at liste de rækker, hvisAlbumIderNULLværdier først. - For det andet skal du bruge
WHEREklausul ogIS NULLoperatør for kun at vise kunstnere, der ikke har nogen album.
Følgende sætning bruger LEFT JOIN klausul med ORDER BY klausul.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;Code language: SQL (Structured Query Language) (sql) Prøv det
Følgende sætning bruger LEFT JOIN klausul med WHERE klausul.
SELECT
artists.ArtistId
, AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
WHERE
AlbumId IS NULL;Code language: SQL (Structured Query Language) (sql) Prøv det
I denne tutorial har du lært, hvordan du bruger SQLite LEFT JOIN klausul for at forespørge data fra flere tabeller.