MySQL má především dva druhy spojování s názvem LEFT JOIN a RIGHT JOIN. Hlavním rozdílem mezi těmito spoji je zahrnutí neshodných řádků. LEFT JOIN zahrnuje všechny záznamy z levé strany a shodné řádky z pravé tabulky, zatímco RIGHT JOIN vrací všechny řádky z pravé strany a neshodné řádky z levé tabulky. V této části se seznámíme s oblíbenými rozdíly mezi LEFT a RIGHT joinem. Než se budeme zabývat jejich porovnáním, porozumíme nejprve klauzuli JOIN, LEFT JOIN a RIGHT JOIN v MySQL.
Co je to klauzule JOIN?
Spojení se používá k dotazování na data z více tabulek a vrací kombinovaný výsledek ze dvou nebo více tabulek prostřednictvím podmínky. Podmínka v klauzuli join udává, jakým způsobem se porovnávají sloupce mezi zadanými tabulkami.
Co je klauzule LEFT JOIN?
Klauzule Left Join spojuje dvě nebo více tabulek a vrací všechny řádky z levé tabulky a odpovídající záznamy z pravé tabulky nebo vrací nulu, pokud nenajde žádný odpovídající záznam. Je také známá jako Left Outer Join. Outer je tedy nepovinné klíčové slovo, které se používá u Left Join.
Pochopit ji můžeme pomocí následujícího vizuálního znázornění:
Chcete-li si přečíst více informací o LEFT Join, klikněte zde.
Co je to klauzule RIGHT JOIN?
Klauzule Right Join spojuje dvě nebo více tabulek a vrací všechny řádky z pravé tabulky a pouze ty výsledky z druhé tabulky, které splnily zadanou podmínku spojení. Pokud najde nevyhovující záznamy z levé tabulky, vrátí hodnotu Null. Je také známý jako Right Outer Join. Outer je tedy nepovinná klauzule, která se používá u Right Join.
Pochopit ji můžeme pomocí následujícího vizuálního znázornění.
Chcete-li si přečíst více informací o RIGHT JOIN, klikněte sem.
Syntaxe klauzule LEFT JOIN
Následující je obecná syntaxe LEFT JOIN:
Následující je obecná syntaxe LEFT OUTER JOIN:
Syntaxe klauzule RIGHT JOIN
Následující je obecná syntaxe RIGHT JOIN:
Následující je obecná syntaxe RIGHT OUTER JOIN:
LEFT JOIN versus. RIGHT JOIN
Následující srovnávací tabulka stručně vysvětluje jejich hlavní rozdíly:
LEFT JOIN | RIGHT JOIN |
---|---|
Spojuje dvě nebo více tabulek, vrací všechny záznamy z levé tabulky a odpovídající řádky z pravé tabulky. | Slouží ke spojení dvou nebo více tabulek, vrací všechny záznamy z pravé tabulky a odpovídající řádky z levé tabulky. |
Výsledková sada bude obsahovat nulovou hodnotu, pokud v pravé tabulce není žádný odpovídající řádek. | Výsledková sada bude obsahovat nulovou hodnotu, pokud v levé tabulce není žádný odpovídající řádek. |
Říká se mu také LEFT OUTER JOIN. | Říká se mu také RIGHT OUTER JOIN. |
Příklad
Pochopíme rozdíly mezi oběma spojeními pomocí příkladů. Předpokládejme, že máme tabulky s názvy „zákazník“ a „objednávky“, které obsahují následující data:
Tabulka: zákazník
Tabulka: objednávky
LEFT JOIN Příklad
Následující příkaz SQL vrátí odpovídající záznamy z obou tabulek pomocí dotazu LEFT JOIN:
Po úspěšném provedení dotazu získáme následující výstup:
RIGHT JOIN Příklad
Následující příkaz SQL vrátí odpovídající záznamy z obou tabulek pomocí dotazu RIGHT JOIN:
Po úspěšném provedení dotazu získáme následující výstup:
.