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 (aktuální článek), CROSS JOIN, FULL JOIN

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

Syntaxe RIGHT OUTER JOIN

SELECT
  [Tabulka_A].[Sloupec 1]
  ,[Tabulka_A].[Sloupec 2]
  ,[Tabulka_B].[Sloupec 3]
FROM [Tabulka_A]
     RIGHT 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]
     RIGHT JOIN [Tabulka_B]
       ON [Tabulka_A].[Cislo] = [Tabulka_B].[Cislo];

Výsledkem bude 5 řádků:

SQL Spojovani tabulek SQL Server - right outer join 2

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 RIGHT JOIN na příkladu fotbalových týmů

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])
  • [Mesta] ([ID], [Nazev_mesta])

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]
     RIGHT 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).

Right-join-result-e1444499913824

Ve výsledku jsou zobrazena všechna možná města z tabulky “Mesto” (pravá/right tabulka) a k nim jsou zobrazeny fotbalové týmy.

  • Tým Brno v tabulce nenajdeme, protože Brno není doplněno v tabulce “Mesto” a Right join nám město automaticky vyloučí.
  • Na druhou stranu Ostava a Horní Dolní v tabulce s městy existuje, nemáme k nim ale tým, proto jsou pole [ID] a [Tym] NULL
Rate this post

Jan Zedníček - Data & Finance

Jmenuji se Honza Zedníček a působím jako freelancer. Tuto práci dělám pro různé firmy již přes 10 let. Před tím jsem dlouhou dobu pracoval také jako BI developer, finanční controller, analytik a krátce jako finanční manažer. Vše pro společnosti z oblasti IT, bankovnictví a výroby. 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 a sloužily i někomu dalšímu.

=> Přihlašte se do naší Excel facebook skupiny (1.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »
=> Pokud vám článek pomohl, sdílejte ho nebo mě uveďte na vašich webových stránkách jako užitečný zdroj informací

Leave a Reply

Your email address will not be published. Required fields are marked *