shrnutí: v tomto tutoriálu se naučíte používat klauzuli PostgreSQL LEFT JOIN
pro výběr dat z více tabulek.
Úvod do PostgreSQL left JOIN klauzule
Předpokládejme, že máte dvě tabulky: A
B
.,
Každý řádek v tabulce. A
může mít žádné nebo mnoho odpovídající řádky v tabulce B
zatímco každý řádek v tabulce. B
má jeden a pouze jeden odpovídající řádek v tabulce A
.
vyberte data z tabulky A
, který může nebo nemusí mít odpovídající řádky v tabulce B
LEFT JOIN
klauzule.,
následující prohlášení ilustruje LEFT JOIN
syntaxi, která se připojí k tabulce A
tabulky B
:
Code language: SQL (Structured Query Language) (sql)
zapojte se do tabulky A
tabulky B
tabulky pomocí left join, postupujte takto:
- První, zadat sloupce v obou tabulkách, ze které chcete vybrat data v
SELECT
klauzule. - druhý, zadejte levou tabulku (tabulka
A
) v klauzuliFROM
., - za Třetí, určit správné tabulky (tabulka
B
) vLEFT JOIN
klauzule a připojit se k stavu poON
klíčové slovo.
klauzuleLEFT JOIN
spustí výběr dat z levé tabulky. Pro každý řádek v levé tabulce, porovnává hodnoty v pka
sloupec s hodnotu pro každý řádek v fka
sloupce pravé tabulky.,
pokud jsou tyto hodnoty stejné, vytvoří klauzule LEFT join nový řádek, který obsahuje sloupce, které se objeví v klauzuli SELECT
a přidá tento řádek do sady výsledků.
V případě, že tyto hodnoty nejsou stejné, levá připojit doložku také vytvoří nový řádek, který obsahuje sloupce, které se zobrazí v SELECT
klauzule. Kromě toho vyplňuje sloupce, které pocházejí z pravé tabulky, nulou.,
následující Vennův diagram ilustruje, jak LEFT JOIN
klauzule funguje:
Všimněte si, že LEFT JOIN
je také odkazoval se na jako LEFT OUTER JOIN
.
PostgreSQL vlevo připojit příklady
podívejme se na následující film
a inventory
tabulky ze vzorové databáze.,
Každý řádek film
tabulka může mít nula nebo více řádků v inventory
tabulka. Každý řádek v tabulce inventory
má jeden a pouze jeden řádek v tabulce film
.
sloupecfilm_id
vytváří spojení mezi tabulkamifilm
ainventory
.,
následující prohlášení používá LEFT JOIN
klauzule join film
tabulka inventory
tabulka:
Když řádek film
tabulka nemá odpovídající řádek v inventory
tabulka, hodnota inventory_id
sloupci tento řádek NULL
.,
následující prohlášení přidává WHERE
klauzule najít filmy, které nejsou v inventáři:
následující prohlášení, vrátí stejný výsledek., Rozdíl je, že používá tabulky aliasy, aby se dotaz stručnější:
Pokud obě tabulky mají stejný sloupec název používaný v ON
klauzule, můžete použít USING
syntaxi jako je tato:
Tato technika je užitečné, když chcete vybrat řádky z jedné tabulky, které nemají odpovídající řádky v druhé tabulce.