Spojování tabulek
Stránky: | E-learning VŠCHT Praha |
Kurz: | Využití databází a jazyka SQL |
Kniha: | Spojování tabulek |
Vytiskl(a): | Nepřihlášený host |
Datum: | neděle, 3. srpna 2025, 00.08 |
1. Spojení SELF JOIN
Popis
Spojení SELF JOIN může na první pohled vypadat podivně, nicméně se jedná o regulérní spojení tabulky sama se sebou a může mít dokonce velmi praktické použití. Uvažujme příklad, že bychom chtěli najít v tabulce měst taková, která jsou jiná, ale mají stejný název, pak je na snadě řešení právě pomocí spojení SELF JOIN. Spojení SELF JOIN nepoužívá žádné speciální klíčové slovo, vystačíme s definicí podmínky pomocí WHERE. Je však potřeba jednu tabulku instancovat pomocí dvou aliasů, neboť se v rámci podmínky v jednom dotazu nelze odkazovat na stejnou tabulku.
Syntaxe
SELECT * FROM nazev_tabulky A, nazev_tabulky B WHERE podminka;
Příklad
2. Spojení (INNER) JOIN
Popis
Spojení INNER JOIN, někdy označované jen jako JOIN, vytváří spojení dvou tabulek a vrací záznamy, které mají odpovídající hodnoty definovaných sloupců v obou tabulkách.
Syntaxe
SELECT * FROM nazev_tabulky A INNER JOIN nazev_tabulky B ON podminka_spojeni;
Příklad
3. Spojení LEFT (OUTER) JOIN
Popis
Spojení LEFT OUTER JOIN, někdy označované jen jako LEFT JOIN, vždy vrací všechny záznamy z levé tabulky (A) a jim odpovídající záznamy z pravé tabulky (B). Pokud pro záznam z tabulky A neexistuje korespondující záznam v tabulce B na základě definované podmínky, doplní se příslušné sloupce v záznamech tabulky A hodnotami NULL.
Syntaxe
SELECT * FROM nazev_tabulky A LEFT JOIN nazev_tabulky B ON podminka_spojeni;
4. Spojení RIGHT (OUTER) JOIN
Popis
Spojení RIGHT OUTER JOIN, někdy označované jen jako RIGHT JOIN, vždy vrací
všechny záznamy z pravé tabulky (B) a jim odpovídající záznamy z levé
tabulky (A). Pokud pro záznam z tabulky B neexistuje korespondující
záznam v tabulce A na základě definované podmínky, doplní se příslušné
sloupce v záznamech tabulky B hodnotami NULL.
Syntaxe
SELECT * FROM nazev_tabulky A RIGHT JOIN nazev_tabulky B ON podminka_spojeni;
Příklad
Spojení RIGHT OUTER JOIN není v systému SQLite implementováno.
5. Spojení FULL (OUTER) JOIN
Popis
Spojení FULL OUTER JOIN, někdy označované jen jako FULL JOIN, vždy vrací
všechny záznamy z levé tabulky (A) a všechny záznamy z pravé
tabulky (B). Pokud pro záznam z jedné tabulky neexistuje korespondující
záznam v druhé tabulce na základě definované podmínky, doplní se příslušné
sloupce v záznamech dané tabulky hodnotami NULL.
Syntaxe
SELECT * FROM nazev_tabulky A FULL OUTER JOIN nazev_tabulky B ON podminka_spojeni;
Příklad
Spojení FULL OUTER JOIN není v systému SQLite implementováno.
Obecně je spojení FULL OUTER JOIN definováno jako kombinace dvou spojení LEFT OUTER JOIN a RIGHT OUTER JOIN pomocí operace sjednocení UNION.
SELECT * FROM nazev_tabulky A LEFT OUTER JOIN nazev_tabulky B ON podminka_spojeni
UNION
SELECT * FROM nazev_tabulky A RIGHT OUTER JOIN nazev_tabulky B ON podminka_spojeni;
Ovšem díky faktu, že ani spojení RIGHT OUTER JOIN není v systému SQLite implementováno, ani toto řešení nelze použít. Spojení je však možné nahradit pomocí kombinace spojení LEFT OUTER JOIN a operace UNION.
6. Spojení UNION
Popis
Operace UNION slouží ke spojení výsledků více příkazů SELECT. Sady výsledků však musí splňovat tři podmínky
- sada musí mít stejný počet sloupců
- sloupce musí být ve stejném pořadí
- hodnoty sloupců musí být stejného typu
Defaultně se při spojení UNION vynechají případné duplicitní záznamy. Pokud je potřeba zachovat všechny záznamy, uvede se klíčové slovo ALL.
Syntaxe
SELECT * FROM nazev_tabulky
UNION [ALL]
SELECT * FROM nazev_tabulky;
Příklad