Kombinuje záznamy ze dvou tabulek, kdykoli ve společném poli existují shodné hodnoty.
Syntaxe
FROM tabulka1 INNER JOIN tabulka2 ON tabulka1.pole1operátor_porovnánítabulka2.pole2
Operace INNER JOIN se skládá z těchto částí:
Část |
Popis |
tabulka1, tabulka2 |
Názvy tabulek, ze kterých jsou slučovány záznamy |
pole1, pole2 |
Názvy slučovaných polí. Nejedná-li se o číselná pole, musí mít obě pole stejný Datový typ a obsahovat stejný druh dat, názvy polí se však nemusejí shodovat. |
operátor_porovnání |
Libovolný relační porovnávací operátor: "=," "<," ">," "<=," ">=," nebo "<>." |
Poznámky
Operaci INNER JOIN můžete použít z jakékoli klauzule FROM. Toto je nejběžnější typ spojení. Vnitřní spojení kombinují záznamy ze dvou tabulek, kdykoli ve společném poli obou tabulek existují shodné hodnoty.
INNER JOIN můžete použít s tabulkami Departments a Employees pro výběr všech zaměstnanců v jednotlivých odděleních. Pokud chcete naopak vybrat všechna oddělení (i v případě, že některá nemají přiřazené žádné zaměstnance) nebo všechny zaměstnance (i v případě, že někteří nejsou přiřazení žádnému oddělení), můžete pomocí operace LEFT JOIN nebo RIGHT JOIN vytvořit vnější spojení.
Pokud se pokusíte spojit pole obsahující data Memo nebo objekt OLE, dojde k chybě.
Můžete spojit jakákoli dvě číselná pole s podobnými typy. Můžete třeba spojit pole AutoNumber a Long, protože jsou podobného typu. Nemůžete ale spojit pole typu Single a Double.
Následující příklad ukazuje, jak byste mohli tabulky Categories a Products spojit pomocí pole CategoryID.
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID;
V předchozím příkladu je spojeným polem CategoryID, toto pole ale není zahrnuto ve výstupu dotazu, protože není zahrnuto v příkazu SELECT. Pokud chcete zahrnout spojené pole, zahrňte název pole do příkazu SELECT – v tomto případě Categories.CategoryID.
V příkazu JOIN také můžete propojit několik klauzulí ON pomocí následující syntaxe:
SELECT pole
FROM tabulka1 INNER JOIN tabulka2 ON tabulka1.pole1operátor_porovnánítabulka2.pole1 AND ON tabulka1.pole2operátor_porovnánítabulka2.pole2) OR ON tabulka1.pole3operátor_porovnánítabulka2.pole3)];Můžete také vnořit příkazy JOIN pomocí následující syntaxe:
SELECT pole
FROM tabulka1 INNER JOIN (tabulka2 INNER JOIN [( ]tabulka3 [INNER JOIN [( ]tabulkax [INNER JOIN ...)] ON tabulka3.pole3operátor_porovnánítabulkax.polex)] ON tabulka2.pole2operátor_porovnánítabulka3.pole3) ON tabulka1.pole1operátor_porovnánítabulka2.pole2;Operace LEFT JOIN a RIGHT JOIN můžou být vnořené uvnitř operace INNER JOIN. Operace INNER JOIN ale nemůže být vnořená uvnitř operací LEFT JOIN a RIGHT JOIN.