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é
NULLhodnoty 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 BYklauzule pro seznam řádků, jejichžAlbumIdjeNULLhodnoty jako první. - Zadruhé použijte
WHEREklauzule aIS NULLoperá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.