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ů