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
NULL
væ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 BY
klausul for at liste de rækker, hvisAlbumId
erNULL
værdier først. - For det andet skal du bruge
WHERE
klausul ogIS NULL
operatø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.