Sdílet prostřednictvím


Typy spojení

Když spojujete tabulky, ovlivní typ spojení, který vytvoříte řádky, které se objeví v sadě výsledků.Můžete vytvořit následující typy spojení:

  • Vnitřní spojení spojení, které zobrazí pouze řádky, které mají odpovídající v obou spojené tabulky.(Toto je výchozí typ spojení v dotazu a Návrhář zobrazení.) Můžete například spojit titles a publishers tabulky vytvořit sadu výsledků, který zobrazuje název vydavatele pro každý titul.Vnitřní spojení tituly, u kterých nemáte aplikaci publisher informace nejsou zahrnuty v sadě výsledků, ani vydavatelé bez názvu.Výsledný příkaz SQL takového spojení může vypadat například takto:

    SELECT     title, pub_name
    FROM         titles INNER JOIN
    publishers ON titles.pub_id = publishers.pub_id
    

    [!POZNÁMKA]

    Sloupce obsahující hodnoty NULL neodpovídají žádné hodnoty, když vytváříte vnitřní spojení a jsou tedy vyloučeny ze sady výsledků.Hodnoty Null se neshodují s jinými hodnotami null.

  • Vnější spojení spojení, který obsahuje řádky, i když nemají související řádky spojené tabulky.Můžete vytvořit vnější spojení zadání neodpovídající řádky, které mají být zahrnuty tři varianty:

    • Levé vnější spojení jsou zahrnuty všechny řádky z tabulky s názvem první ("left" tabulka, která se nachází vlevo od klauzule JOIN).Neodpovídající řádků v pravé tabulce nezobrazí.Například následující příkaz SQL ilustruje levé vnější spojení mezi titles a publishers tabulky zahrnout všechny názvy, dokonce i nemají informace o vydavateli:

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles LEFT OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
    • Pravé vnější spojení jsou zahrnuty všechny řádky v tabulce s názvem druhé ("pravé" tabulky, která se zobrazí vpravo klauzule JOIN).Neodpovídající řádků v levé tabulce nejsou zahrnuty.Například pravé vnější spojení mezi titles a publishers tabulky budou zahrnuti všichni vydavatelé, dokonce i ty, kteří žádné tituly v titles tabulky.Výsledný příkaz SQL může vypadat například takto:

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles RIGHT OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
    • Úplné vnější spojení všechny řádky ve všech spojených tabulek jsou zahrnuty, zda byly přiřazeny nebo ne.Například úplné vnější spojení mezi titles a publishers zobrazí všechny knihy a vydavatele, i ty, které mají odpovídající v jiné tabulce.

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles FULL OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      

      [!POZNÁMKA]

      Některé databáze, jako je například Oracle, nepodporují úplné vnější spojení.

  • Křížové spojení spojení, jehož sada výsledků obsahuje jeden řádek pro každou možnou párování řádky z obou tabulek.Například authors CROSS JOIN publishers výnosů sadu výsledků obsahující jeden řádek pro každou kombinaci možné autora a vydavatele.Výsledný příkaz SQL může vypadat například takto:

    SELECT *
    FROM authors CROSS JOIN publishers 
    

Viz také

Koncepty

Práce s daty v podokně výsledků

Další zdroje

Zadávání kritérií vyhledávání