SQL RIGHT JOIN Tutoriál: RIGHT JOIN na příkladu mysql

 

Tutoriál: Vysvětlení RIGHT JOIN a práce s NULL hodnotami v SQL

Úvod: V relačních databázích, jako je SQL, jsou spojení mezi tabulkami běžným způsobem, jak získat data z více tabulek. LEFT JOIN a RIGHT JOIN jsou dva typy spojení, které umožňují kombinovat data z dvou nebo více tabulek. V tomto tutoriálu se zaměříme na vysvětlení RIGHT JOIN a jeho použití, a zároveň se podíváme na práci s NULL hodnotami.

Příkladový úkol: Představme si, že máme tabulku "zákazníci" obsahující informace o našich zákaznících a tabulku "objednávky" obsahující informace o jejich objednávkách. Chceme získat seznam všech zákazníků a jejich objednávek, včetně těch, kteří ještě žádné objednávky neudělali.

Struktura tabulek:

Tabulka "zákazníci":

+----+-----------+--------------+ | id | jméno | adresa | +----+-----------+--------------+ | 1 | Alice | Praha | | 2 | Bob | Brno | | 3 | Charlie | Ostrava | +----+-----------+--------------+

Tabulka "objednávky":

+----+-------------+-----------+ | id | customer_id | produkt | +----+-------------+-----------+ | 1 | 1 | Káva | | 2 | 1 | Čaj | | 3 | 2 | Koláč | | 4 | 3 | Cola | | 5 | 3 | Bonbóny | +----+-------------+-----------+

Použití RIGHT JOIN: RIGHT JOIN umožňuje zahrnout všechny záznamy z pravé tabulky (v našem případě "objednávky") a odpovídající záznamy z levé tabulky ("zákazníci"). Dokud jsou v pravé tabulce záznamy, které nemají odpovídající záznamy v levé tabulce, budou tyto záznamy zahrnuty výsledku spojení.

SQL dotaz s RIGHT JOIN:

SELECT z.id, z.jméno, o.id AS objednávka_id, o.produkt FROM zákazníci z RIGHT JOIN objednávky o ON z.id = o.customer_id;

Výsledek dotazu:

+----+-----------+--------------+----------+ | id | jméno | objednávka_id| produkt | +----+-----------+--------------+----------+ | 1 | Alice | 1 | Káva | | 1 | Alice | 2 | Čaj | | 2 | Bob | 3 | Koláč | | 3 | Charlie | 4 | Cola | | 3 | Charlie | 5 | Bonbóny | +----+-----------+--------------+----------+

Práce s NULL hodnotami: Vidíme, že Charlie má dvě objednávky, ale Alice a Bob mají pouze jednu objednávku. To je způsobeno tím, že Alice a Bob nemají žádné objednávky, které by odpovídaly záznamům v tabulce "objednávky". Proto jsou výsledky spojení pro Alice a Bob vytvořeny s NULL hodnotami pro sloupce "objednávka_id" a "produkt".

Rozšíření příkladu: Pokud bychom chtěli rozšířit náš příklad a pracovat s opakujícími se identifikátory, můžeme přidat další zboží do tabulky "objednávky", například produkty z papírnictv

Komentáře

Oblíbené příspěvky