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;

Příklad



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