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
SELECTklauzule. - druhý, zadejte levou tabulku (tabulka
A) v klauzuliFROM., - za Třetí, určit správné tabulky (tabulka
B) vLEFT JOINklauzule a připojit se k stavu poONklíč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 inventorytabulka. 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 inventorytabulka:
Když řádek film tabulka nemá odpovídající řádek v inventorytabulka, 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.