Ответ
В SQL существует несколько типов JOIN для объединения данных из двух и более таблиц.
Основные виды JOIN:
-
INNER JOIN — возвращает только строки, для которых есть совпадение в обеих таблицах по условию.
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id; -
LEFT (OUTER) JOIN — возвращает все строки из левой таблицы и соответствующие строки из правой. При отсутствии совпадения в правой таблице возвращаются NULL.
SELECT customers.name, orders.order_date FROM customers LEFT JOIN orders ON customers.id = orders.customer_id; -
RIGHT (OUTER) JOIN — противоположность LEFT JOIN: возвращает все строки из правой таблицы и соответствующие строки из левой.
-
FULL (OUTER) JOIN — возвращает все строки из обеих таблиц, объединяя результаты LEFT и RIGHT JOIN. Отсутствующие совпадения заполняются NULL.
-
CROSS JOIN — возвращает декартово произведение строк обеих таблиц (все возможные комбинации).
SELECT * FROM sizes CROSS JOIN colors; -
SELF JOIN — соединение таблицы с самой собой, часто используется для иерархических данных (например, сотрудник -> менеджер).
SELECT e1.name AS employee, e2.name AS manager FROM employees e1 LEFT JOIN employees e2 ON e1.manager_id = e2.id; -
NATURAL JOIN — автоматически соединяет таблицы по столбцам с одинаковыми именами. На практике используется редко из-за неявного поведения, которое может привести к ошибкам.