MySQL poskytuje spoustu příkazů, které jsou potřebné při správě databáze. Například často potřebujeme získat některá data z různých tabulek na základě nějaké podmínky. MySQL pak poskytuje různé typy spojení, aby bylo dosaženo požadovaných výsledků. Naučme se LEFT JOIN A RIGHT JOIN z MySQL.
V SQL neexistuje žádný takový příkaz jako FULL OUTER JOIN, ale k získání stejných výsledků můžeme použít jednoduchý JOIN nebo jednoduše použít příkaz SELECT přes dvě různé tabulky.
Jinak MySQL poskytuje VLEVO SE PŘIPOJTE a SPRÁVNĚ SE PŘIPOJTE získat záznamy nebo řádky z pravé nebo levé tabulky. Zkusme několik různých příkladů, abychom získali vhodné výsledky pomocí vhodných spojení.
Příklady
Než se začneme učit používání LEFT a RIGHT JOIN. Naučíme se, jak získat všechna data z obou tabulek (běžných i neobvyklých) pomocí jednoduchého příkazu SELECT a pomocí CROSS JOIN s příkazem SELECT. Nejprve se pokusíme získat všechna data z obou tabulek pomocí příkazu SELECT.
Například existují 2 tabulky, které jsme dostali podle jména autora a knih.
Knihy DESC;Autoři DESC;
Pokud chceme získat všechny sloupce z obou tabulek. Dotaz SELECT bude použit takto:
VYBRAT * Z knih, autorů;
Jak vidíte, máme všechny sloupce z obou tabulek, aniž bychom poskytli podmínku.
Pokud použijeme klauzuli JOIN nebo CROSS JOIN, oba nám přinesou stejné výsledky. Například:
VYBERTE * Z KNÍH PŘIPOJTE se k autorům;
Nyní zkusme použít CROSS JOIN:
VYBERTE * Z KNÍŽEK CROSS JOIN autoři;
Jak můžete vidět, všechny tyto dotazy nám přinášejí stejné výsledky.
Není však dobré mít všechny sloupce v takové abstraktní podobě. Chcete-li tedy získat několik konkrétních sloupců z levé nebo pravé tabulky, můžete postupovat dvěma způsoby; jedním ze způsobů je, že používáte názvy sloupců pomocí příkazů SELECT nebo pomocí spojení, která vyhovují vašemu požadavku.
Dobře, teď pojďme kupředu, abychom porozuměli LEVÉMU PŘIPOJENÍ a SPRÁVNÉMU PŘIPOJENÍ.
VLEVO SE PŘIPOJTE
Předpokládejme, že chceme získat některé konkrétní sloupce, které jsou buď z tabulky knih, nebo běžné mezi tabulkami knih a autorů, na základě nějaké podmínky je podmínka skutečně poskytnuta porovnáním dvou různých tabulek. Například chceme spojit dvě tabulky, knihy a autory, kde se ID knihy rovná ID autora. Můžeme očekávat takový výsledek pomocí příkazu LEFT Join with SELECT; Vyberte dotaz s názvy sloupců, které chcete získat z tabulky knih nebo od autorů. Dotaz SELECT s LEFT JOIN a podmínkou by vypadal takto:
VYBRAT knihy.název_knihy, knihy.book_id, autoři.autor_id,autoři.author_fname, autoři.author_lname
Z knih
LEFT JOIN autoři
NA knihy.book_id = autoři.autor_id;
Jelikož jsme zmínili tabulku knih na levé straně, spojení získá ID jednoho řádku z tabulky knih a hledá stejné ID číslo v tabulce autora. Pokud najde stejné identifikační číslo, zobrazí také dané sloupce z autorské tabulky. V opačném případě se ve sloupcích autorské tabulky zobrazí NULL. Provedeme tento dotaz a budeme svědky výsledků.
Jak vidíte, máme řádky z obou tabulek, kde se ID tabulky knih rovná ID tabulky autora. V posledním řádku také vidíme, že v tabulce autora není ID číslo 4, takže proti němu vrátil NULL.
SPRÁVNĚ SE PŘIPOJTE
Podobně, pokud chceme na základě určitých podmínek získat některá data, ať už z autorské tabulky nebo společná mezi knihami a autorskou tabulkou, lze tento druh výsledků očekávat pomocí klauzule RIGHT join a SELECT. Dotaz SELECT s RIGHT JOIN a podmínkou by vypadal takto:
VYBRAT knihy.název_knihy, knihy.book_id, autoři.autor_id,autoři.author_fname, autoři.author_lname
Z knih
SPRÁVNÍ PŘIPOJTE se k autorům
NA knihy.book_id = autoři.autor_id;
Tentokrát víme, že tabulka autorů je na pravé straně, takže spojení získá ID jednoho řádku z tabulky autora a hledá stejné ID číslo v tabulce knihy. Pokud najde stejné identifikační číslo, zobrazí dané sloupce z tabulky knih. Provedení dotazu by mělo za následek toto:
Jak vidíte, máme řádky z obou tabulek, kde se ID autora rovná ID knihy. Víme, že v tabulce knih byla čtvrtá kniha, i když jsme ji nedostali, je to kvůli SPRÁVNÉMU PŘIPOJENÍ.
Takto tedy skutečně funguje LEFT JOIN a RIGHT JOIN.
Závěr
Naučili jsme se porozumět CROSS, LEFT a RIGHT JOIN a naučili jsme se je používat k dosažení požadovaných výsledků v MySQL. Také jsme vyzkoušeli několik různých příkladů JOINS, abychom lépe a hlouběji porozuměli konceptům. Navštěvujte tedy náš web linuxhint.com pro užitečnější obsah, jako je tento.