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
Žádné komentáře:
Okomentovat