Łączy rekordy tabeli źródłowej w przypadku użycia w dowolnej klauzuli FROM.
Składnia
FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2
ON tabela1.pole1 operator_porównania tabela2.pole2Operacje LEFT JOIN i RIGHT JOIN zawierają następujące segmenty:
Segment |
Opis |
tabela1, tabela2 |
Nazwy tabel, z których pochodzą łączone rekordy. |
pole1, pole2 |
Nazwy sprzęganych pól. Pola 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
Użyj operacji LEFT JOIN, aby utworzyć lewe sprzężenie zewnętrzne. Lewe sprzężenia zewnętrzne obejmują wszystkie rekordy z pierwszej (lewej) z dwóch tabel, nawet jeśli nie ma pasujących wartości dla rekordów z drugiej (prawej) tabeli.
Użyj operacji RIGHT JOIN, aby utworzyć prawe sprzężenie zewnętrzne. Prawe sprzężenia zewnętrzne obejmują wszystkie rekordy z drugiej (prawej) z dwóch tabel, nawet jeśli nie ma pasujących wartości dla rekordów z pierwszej (lewej) tabeli.
Na przykład można użyć operacji LEFT JOINT na tabeli lewej Departments (Działy) i tabeli prawej Employees (Pracownicy), aby wybrać wszystkie działy, łącznie z tymi, do których nie są przypisani żadni pracownicy. Aby wybrać wszystkich pracowników, łącznie z tymi, którzy nie są przypisani do żadnego działu, użyj operacji RIGHT JOIN.
W poniższym przykładzie pokazano, jak utworzyć sprzężenie tabel Categories (Kategorie) i Products (Produkty) w polu CategoryID (Identyfikator kategorii). Zapytanie zwróci listę wszystkich kategorii, łącznie z tymi, które nie zawierają żadnych produktów:
SELECT CategoryName, ProductName FROM Categories LEFT JOIN Products ON Categories.CategoryID = Products.CategoryID;
W tym przykładzie pole CategoryID (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, wprowadź nazwę tego pola w instrukcji SELECT — w tym przypadku jest to nazwa Categories.CategoryID.
Aby utworzyć zapytanie, które obejmuje wyłącznie rekordy, w których dane w polach sprzężonych są takie same, użyj operacji INNER JOIN.
-
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. Aby dowiedzieć się, jak zagnieździć sprzężenia w innych sprzężeniach, zapoznaj się z dyskusją na temat zagnieżdżania w artykule dotyczącym operacji INNER JOIN.
-
Możesz połączyć kilka klauzul ON. Zapoznaj się z dyskusją na temat łączenia klauzul w artykule dotyczącym operacji INNER JOIN, aby dowiedzieć się, jak to się robi.
W przypadku próby połączenia pól zawierających dane typu Nota lub Obiekt OLE wystąpi błąd.