SQL FULL JOIN – Spojování tabulek v SQL s vysvětlením přes Excel

Poslední aktualizace:

Většinou si při práci s SQL databází nevystačíme pouze s 1 tabulkou. Některé hodnoty se nacházejí v jedné tabulce a další hodnoty v druhé = v rozdělení informací do mnoha tabulek , které jsou mezi sebou propojeny (přes klíče) spočívá podstata relačních databází.

Existují 5 základních druhů joinů: INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN, FULL JOIN (aktuální článek)

Tip: Příkaz FULL OUTER JOIN a FULL JOIN je ekvivalentní

Syntaxe FULL OUTER JOIN

SELECT
  [Tabulka_A].[Sloupec 1]
  ,[Tabulka_A].[Sloupec 2]
  ,[Tabulka_B].[Sloupec 3]
FROM [Tabulka_A]
     FULL OUTER JOIN [Tabulka_B]
       ON [Tabulka_A].[Id] = [Tabulka_B].[Id]

Představme si 2 tabulky a každá z těchto tabulek bude obsahovat pouze 1 sloupec [cislo]:

  • Tabulka A obsahuje sloupec [cislo]: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  • Tabulka B obsahuje sloupec [cislo]: 1, 2, 3, 100, 150

Co bude výsledkem skriptu?

SELECT
[Tabulka_A].[Cislo], [Tabulka_B].[Cislo]
FROM [Tabulka_A]
     FULL JOIN [Tabulka_B]
       ON [Tabulka_A].[Cislo] = [Tabulka_B].[Cislo];

Výsledkem bude 12 řádků:

SQL Spojovani tabulek - full outer join

Tip: Podívejte se na příklady všech typů spojování tabulek ať pochopíte rozdíly mezi nimi. U všech používám stejný příklad – fotbalové týmy

Příklad FULL JOIN – fotbalové týmy

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

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

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 – Spojování tabulek v SQL s vysvětlením přes Excel
5 (100%) 1 vote[s]

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Category: Základy SQL Tags:

About Ing. Jan Zedníček - BI Developer, Finance controller

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.