SQL FULL JOIN

Příkaz FULL JOIN v SQL vytváří relaci mezi 2 tabulkami a vrací všechny záznamy, to znamená záznamy z levé (A) i pravé (B) tabulky. Záznamy které nebyly nalezeny v left (A) nebo pravé (B) tabulce získají hodnotu NULL.

SQL FULL join

Syntaxe:

/*FULL JOIN je ekvivalentní s FULL OUTER JOIN*/
SELECT sloupce
FROM Tabulka_A FULL JOIN Tabulka_B
ON TabulkaA.sloupec=TabulkaB.sloupec

Příklad FULL JOIN

Princip spojování tabulek si ukážeme na příkladu s fotbalovými týmy. Mějme 2 tabulky, prohlédněte si je:

  • Fotbalove_tymy (ID, Tym, Id_mesto) – tabulka se seznamem fotbalových týmů
  • Mesta (ID, Nazev_mesta) – tabulka s městy
fotbalove-tymy-priklad

Vstupní data

Zobrazíme si seznam fotbalových týmů a k nim domácí město, skript bude vypadat takto:

SELECT
Fotbalove_tymy.ID, Fotbalove_tymy.Tym, Mesto.Mesto
FROM Fotbalove_tymy FULL JOIN Mesto
ON Fotbalove_tymy.Id_Mesto=
Mesto.Id

Co děláme? Vytváříme relaci mezi tabulkami. Podmínku, na základě které se nám záznamy v obou tabulkách spojí leží v ON klauzuli (Fotbalove_tymy.Id_Mesto=Mesto.Id).

full-join-vysledek

Výsledek

Ve výsledku máme zobrazeny všechny záznamy z obou tabulek a tam, kde nebyla splněna podmínka ON klauzule „Fotbalove_tymy.Id_Mesto=Mesto.Id“ máme NULL.

  • Fotbalový tým Brno má ID_mesto=0. Toto ID neexistuje v pravé (B) tabulce „Mesto“ a proto zde nevidíme pro tým Brno žádné město
  • Naopak Ostrava a Horní Dolní nemá v naší tabulce žádný fotbalový tým a proto mají pole fotbalove_tymy.[ID] a fotbalove_tymy.[Tym] hodnoty NULL (nebyly nalezeny).

SQL FULL JOIN je jeden z nástrojů jak odchytávat problémy v relační integritě databáze mezi tabulkami (pokud nemáme nastaveny cizí klíče).

Reagovat na příspěvek