Shrnutí: v tomto tutoriálu, se dozvíte o MySQL LEFT JOIN
klauzule a jak jej použít pro dotaz na data ze dvou nebo více tabulek.
Úvod do MySQL left JOIN
LEFT JOIN
umožňuje dotaz data ze dvou nebo více tabulek. Podobné INNER JOIN
bodě, LEFT JOIN
je volitelná klauzule SELECT
prohlášení, které se objeví bezprostředně po FROM
klauzule.,
Předpokládejme, že se chcete připojit ke dvěma tabulkám t1
a t2
.
následující prohlášení ukazuje, jak použít LEFT JOIN
klauzule join dvou tabulek:
Code language: SQL (Structured Query Language) (sql)
Při použití LEFT JOIN
ustanovení, pojmy levé tabulce a pravé tabulky jsou zavedeny.
ve výše uvedené syntaxi jet1
levá tabulka a t2
pravá tabulka.,
klauzuleLEFT JOIN
vybírá data začínající od levé tabulky (t1
). To odpovídá každý řádek z levé tabulky (t1
) s každý řádek z pravé tabulky(t2
) na join_condition
.
Pokud se řádky z obou tabulek způsobit, že připojit se podmínka vyhodnotí jako TRUE
LEFT JOIN
kombinovat sloupců z řádků z obou tabulek na nový řádek a obsahuje tento nový řádek ve výsledné řádky.,
V případě, že řadě z levé tabulky (t1
) neodpovídá žádný řádek z pravé tabulky(t2
), LEFT JOIN
stále kombinuje sloupců z řádků z obou tabulek do nového řádku a patří na nový řádek ve výsledné řádky. Používá však NULL
pro všechny sloupce řádku z pravé tabulky.
jinými slovy, LEFT JOIN
vrátí všechny řádky z levé tabulky, bez ohledu na to, zda řadě z levé tabulky má odpovídající řádek v pravé tabulce, nebo ne., Pokud není shoda, sloupce řádku z pravé tabulky budou obsahovat NULL
.
následující Vennův diagram vám pomůže představit, jak LEFT JOIN
klauzule funguje:
MySQL left JOIN příklady
vezměme si některé příklady použití LEFT JOIN
klauzule.,
1) Pomocí MySQL left JOIN klauzule spojit dvě tabulky
Viz následující tabulky customers
orders
v ukázkové databázi.
Každý zákazník může mít nula nebo více objednávek při každé objednávce musí patřit k jednomu zákazníkovi.,
Tento dotaz používá LEFT JOIN
klauzule najít všechny zákazníky a jejich objednávky:
Code language: SQL (Structured Query Language) (sql)
Případně, můžete ušetřit nějaké psaní pomocí tabulky aliasů:
Code language: SQL (Structured Query Language) (sql)
V tomto příkladu:
customers
je levá tabulkaorders
je správné tabulky.- klauzule
LEFT JOIN
vrací všechny zákazníky včetně zákazníků, kteří nemají žádnou objednávku., Pokud zákazník nemá žádný řád, hodnoty ve sloupciorderNumber
status
NULL
.,
Protože obě tabulky zákazníci a objednávky mají stejný název sloupce ( customerNumber
) v podmínku spojení se stejným operátorem, můžete použít POMOCÍ syntaxe takto:
Code language: SQL (Structured Query Language) (sql)
Na následující věty jsou ekvivalentní:
Code language: SQL (Structured Query Language) (sql)
A
Code language: SQL (Structured Query Language) (sql)
Pokud jste nahradit LEFT JOIN
klauzuli INNER JOIN
bodě, budete mít pouze zákazníci, kteří mají alespoň jednu objednávku.,
2) Použití MySQL left JOIN klauzule najít bezkonkurenční řádky
LEFT JOIN
klauzule je velmi užitečné, když chcete najít řádky v tabulce, která nemá odpovídající řádku z jiné tabulky.,“>
najít zákazníky, kteří nemají žádné pořadí:
Code language: SQL (Structured Query Language) (sql)
3) Pomocí MySQL left JOIN spojit tři tabulky
Viz následující tři tabulky employees
customers
payments
:
Tento příklad používá dva LEFT JOIN
klauzule join tří tabulek: employees
customers
, a payments
.,
Code language: SQL (Structured Query Language) (sql)
Tento obrázek ukazuje dílčí výstup:
Jak to funguje.
- první
LEFT JOIN
vrátí všechny zaměstnance a zákazníky, kteří zastupovali každý zaměstnanec neboNULL
pokud zaměstnanec nemá na starosti každého zákazníka. - druhý
LEFT JOIN
vrací platby každého zákazníka zastoupeného zaměstnancem neboNULL
pokud zákazník nemá žádnou platbu.
podmínka kde klauzule vs., Na klauzuli
viz následující příklad.
Code language: SQL (Structured Query Language) (sql)
Tento příklad používá LEFT JOIN
klauzule dotazu data z tabulky orders
orderDetails
. Dotaz vrátí objednávku a její řádkové položky pořadového čísla 10123
.,
Nicméně, pokud jste-li přesunout podmínku z WHERE
klauzule ON
článek:
Code language: SQL (Structured Query Language) (sql)
To bude mít jiný význam.,
V tomto případě dotaz vrátí všechny příkazy, ale jen aby 10123
bude mít řádkové položky s ním spojené, jako na následujícím obrázku:
Všimněte si, že pro INNER JOIN
klauzule, stav v ON
klauzule je ekvivalentní podmínku v WHERE
klauzule.
v tomto tutoriálu jste se naučili používat klauzuli MySQL LEFT JOIN
pro připojení dat ze dvou nebo více tabulek.,
- byl tento tutoriál užitečný?
- YesNo