Samenvatting :in deze tutorial leer je hoe je SQLite LEFT JOIN
gebruikt clausule om gegevens uit meerdere tabellen op te vragen.
Inleiding tot SQLite LEFT JOIN
clausule
Gelijk aan de INNER JOIN
clausule, de LEFT JOIN
clausule is een optionele clausule van de SELECT
uitspraak. Je gebruikt de LEFT JOIN
clausule om gegevens uit meerdere gerelateerde tabellen op te vragen.
Stel dat we twee tabellen hebben:A en B.
- A heeft m- en f-kolommen.
- B heeft n en f kolommen.
Om een verbinding tussen A en B uit te voeren met LEFT JOIN
clausule, gebruik je de volgende verklaring:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;
Code language: SQL (Structured Query Language) (sql)
De uitdrukking A.f = B.f
is een voorwaardelijke uitdrukking. Naast de gelijkheidsoperator (=) kun je andere vergelijkingsoperatoren gebruiken, zoals groter dan (>), kleiner dan (<), enz.
De instructie retourneert een resultatenset die bestaat uit:
- Rijen in tabel A (linker tabel) die corresponderende rijen hebben in tabel B.
- Rijen in de tabel A en de rijen in tabel B gevuld met
NULL
waarden in het geval de rij uit tabel A geen overeenkomstige rijen heeft in tabel B.
Met andere woorden, alle rijen in tabel A worden opgenomen in de resultatenset, ongeacht of er overeenkomende rijen in tabel B zijn of niet.
Als je een WHERE
. hebt clausule in de instructie, de search_condition
in de WHERE
clausule wordt toegepast na het matchen van de LEFT JOIN
clausule is voltooid.
Zie de volgende afbeelding van de LEFT JOIN
clausule tussen de A- en B-tabellen.
Alle rijen in tabel A zijn opgenomen in de resultatenset.
Omdat de tweede rij (a2,2)
heeft geen overeenkomstige rij in tabel B, de LEFT JOIN
clausule maakt een valse rij gevuld met NULL
.
Het volgende Venn-diagram illustreert de LEFT JOIN
clausule.
Opgemerkt wordt dat LEFT OUTER JOIN
is hetzelfde als LEFT JOIN
.
SQLite LEFT JOIN
voorbeelden
We gebruiken de artists
en albums
tabellen in de voorbeelddatabase voor demonstratie.
Eén album is van één artiest. Eén artiest kan echter nul of meer albums hebben.
Om artiesten te vinden die geen albums hebben met de LEFT JOIN
clausule selecteren we artiesten en hun bijbehorende albums. Als een artiest geen albums heeft, wordt de waarde van de AlbumId
kolom is NULL.
Om eerst de artiesten weer te geven die geen albums hebben, hebben we twee keuzes:
- Gebruik eerst
ORDER BY
clausule om de rijen weer te geven waarvanAlbumId
isNULL
waarden eerst. - Ten tweede, gebruik
WHERE
clausule enIS NULL
operator om alleen artiesten weer te geven die geen albums hebben.
De volgende instructie gebruikt de LEFT JOIN
clausule met de ORDER BY
clausule.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;
Code language: SQL (Structured Query Language) (sql)
Probeer het
De volgende instructie gebruikt de LEFT JOIN
clausule met de WHERE
clausule.
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)
Probeer het
In deze tutorial heb je geleerd hoe je SQLite LEFT JOIN
gebruikt clausule om gegevens uit meerdere tabellen op te vragen.