Ответ
В SQL оператор JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца. Основные виды:
1. INNER JOIN
Возвращает только те строки, где есть совпадение в обеих таблицах.
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
2. OUTER JOIN
Возвращает все строки из одной или обеих таблиц, даже если совпадения нет. Несовпадающие значения заполняются NULL.
- LEFT (OUTER) JOIN: Все строки из левой таблицы + совпадения из правой.
SELECT employees.name, departments.name FROM employees LEFT JOIN departments ON employees.department_id = departments.id; - RIGHT (OUTER) JOIN: Все строки из правой таблицы + совпадения из левой.
- FULL (OUTER) JOIN: Все строки из обеих таблиц (совпадения + уникальные строки с каждой стороны).
3. CROSS JOIN
Возвращает декартово произведение — все возможные комбинации строк из обеих таблиц.
SELECT sizes.size, colors.color
FROM sizes
CROSS JOIN colors;
4. SELF JOIN
Соединение таблицы самой с собой, часто для представления иерархических данных (например, сотрудник → менеджер).
SELECT emp.name AS employee, mgr.name AS manager
FROM employees emp
LEFT JOIN employees mgr ON emp.manager_id = mgr.id;
5. NATURAL JOIN
Автоматически соединяет таблицы по столбцам с одинаковыми именами. Использовать не рекомендуется из-за неявного поведения и риска ошибок при изменении схемы.
Практическое правило: Для ясности и надежности всегда явно указывайте условие соединения с помощью ON или USING.