Łączy rekordy z dwóch tabel, ilekroć we wspólnym polu występują pasujące wartości.
Składnia
FROM tabela1 INNER JOIN tabela2 ON tabela1.pole1operator_porównania tabela2.pole2
Operacja INNER JOIN zawiera następujące segmenty:
|
Segment |
Opis |
|
tabela1, tabela2 |
Nazwy tabel, z których pochodzą łączone rekordy. |
|
pole1, pole2 |
Nazwy sprzęganych pól. Jeśli nie są to pola numeryczne, muszą mieć ten sam typ danych i zawierać ten sam rodzaj danych, ale mogą mieć inne nazwy. |
|
operator_porównania |
Dowolny relacyjny operator porównania: „=”, „<”, „>”, „<=”, „>=”, lub „<>”. |
Spostrzeżenia
Operacji INNER JOIN możesz użyć w dowolnej klauzuli FROM. Jest to najpopularniejszy typ sprzężenia. Sprzężenia wewnętrzne łączą rekordy z dwóch tabel, ilekroć we wspólnym dla obu tabel polu występują pasujące wartości.
Operacji INNER JOIN możesz użyć dla tabel Działy i Pracownicy, aby wybrać wszystkich pracowników z każdego działu. Natomiast w celu wybrania wszystkich działów (nawet jeśli do niektórych z nich nie są przypisani żadni pracownicy) lub wszystkich pracowników (nawet jeśli niektórzy z nich nie są przypisani do żadnego działu) możesz użyć operacji LEFT JOIN lub RIGHT JOIN, aby utworzyć sprzężenie zewnętrzne.
W przypadku próby połączenia pól zawierających dane typu Nota lub Obiekt OLE wystąpi błąd.
Możesz połączyć dowolne dwa pola liczbowe podobnego typu. Na przykład możesz połączyć pola typu Autonumerowanie i Długie, ponieważ są one podobnego typu. Nie możesz jednak połączyć pól typu Pojedyncze i Podwójne.
W poniższym przykładzie pokazano, jak utworzyć sprzężenie tabel Kategorie i Produkty w polu Identyfikator_kategorii:
SELECT CategoryName, ProductNameFROM Categories INNER JOIN ProductsON Categories.CategoryID = Products.CategoryID;
W poprzednim przykładzie pole Identyfikator_kategorii jest polem sprzężonym, które jednak nie jest uwzględnione w wynikach zapytania, ponieważ nie jest zawarte w instrukcji SELECT. Aby uwzględnić pole sprzężone, umieść nazwę tego pola w instrukcji SELECT — w tym przypadku jest to nazwa Categories.CategoryID.
Możesz też połączyć kilka klauzul ON w instrukcji JOIN, stosując następującą składnię:
SELECT polaFROM tabela1 INNER JOIN tabela2ON tabela1.pole1operator_porównaniatabela2.pole1 ANDON tabela1.pole2operator_porównaniatabela2.pole2) ORON tabela1.pole3operator_porównaniatabela2.pole3)];
Ponadto możesz zagnieździć instrukcje JOIN za pomocą poniższej składni:
SELECT polaFROM tabela1 INNER JOIN(tabela2 INNER JOIN [( ]tabela3[INNER JOIN [( ]tabelax [INNER JOIN ...)] ON tabela3.pole3operator_porównaniatabelax.polex)]ON tabela2.pole2operator_porównaniatabela3.pole3) ON tabela1.pole1operator_porównaniatabela2.pole2;
Operacja LEFT JOIN lub RIGHT JOIN może być zagnieżdżona w operacji INNER JOIN, ale operacja INNER JOIN nie może być zagnieżdżona w operacji LEFT JOIN ani w operacji RIGHT JOIN.