Shrnutí :v tomto tutoriálu se naučíte používat SQLite LEFT JOIN
klauzule k dotazování na data z více tabulek.
Úvod do SQLite LEFT JOIN
klauzule
Podobné jako INNER JOIN
klauzule LEFT JOIN
klauzule je volitelná klauzule SELECT
prohlášení. Používáte LEFT JOIN
klauzule k dotazování na data z více souvisejících tabulek.
Předpokládejme, že máme dvě tabulky:A a B.
- A má sloupce maf.
- B má n a f sloupců.
Chcete-li provést spojení mezi A a B pomocí LEFT JOIN
klauzule, použijete následující příkaz:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;
Code language: SQL (Structured Query Language) (sql)
Výraz A.f = B.f
je podmíněný výraz. Kromě operátoru rovnosti (=) můžete použít další operátory porovnání, například větší než (>), menší než (<) atd.
Příkaz vrátí sadu výsledků, která obsahuje:
- Řádky v tabulce A (levá tabulka), které mají odpovídající řádky v tabulce B.
- Řádky v tabulce tabulky A a řádky v tabulce B vyplněné
NULL
hodnoty v případě, že řádek z tabulky A nemá žádné odpovídající řádky v tabulce B.
Jinými slovy, všechny řádky v tabulce A jsou zahrnuty do sady výsledků, ať už existují odpovídající řádky v tabulce B nebo ne.
V případě, že máte WHERE
klauzule v příkazu, search_condition
v WHERE
klauzule se použije po shodě LEFT JOIN
klauzule se dokončí.
Viz následující obrázek LEFT JOIN
klauzule mezi tabulkami A a B.
Všechny řádky v tabulce A jsou zahrnuty do sady výsledků.
Protože druhý řádek (a2,2)
nemá odpovídající řádek v tabulce B, LEFT JOIN
klauzule vytvoří falešný řádek vyplněno NULL
.
Následující Vennův diagram znázorňuje LEFT JOIN
doložka.
Je třeba poznamenat, že LEFT OUTER JOIN
je stejné jako LEFT JOIN
.
SQLite LEFT JOIN
příklady
Použijeme artists
a albums
tabulky ve vzorové databázi pro demonstraci.
Jedno album patří jednomu interpretovi. Jeden interpret však může mít nula nebo více alb.
Chcete-li najít umělce, kteří nemají žádná alba, použijte LEFT JOIN
klauzule, vybereme umělce a jejich odpovídající alba. Pokud interpret nemá žádná alba, hodnota AlbumId
sloupec je NULL.
Chcete-li nejprve zobrazit umělce, kteří nemají žádná alba, máme dvě možnosti:
- Nejprve použijte
ORDER BY
klauzule pro seznam řádků, jejichžAlbumId
jeNULL
hodnoty jako první. - Zadruhé použijte
WHERE
klauzule aIS NULL
operátora, aby uvedl pouze umělce, kteří nemají žádná alba.
Následující příkaz používá LEFT JOIN
klauzule s ORDER BY
doložka.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Následující příkaz používá LEFT JOIN
klauzule s WHERE
doložka.
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)
Zkuste to
V tomto tutoriálu jste se naučili používat SQLite LEFT JOIN
klauzule k dotazování na data z více tabulek.