MySQL left JOIN (Čeština)

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 t1a 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 – Vennův Diagram

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á tabulka orders je správné tabulky.
  • klauzuleLEFT 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 sloupci orderNumber 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 nebo NULL 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 nebo NULL 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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *