Ответ
Оператор JOIN в SQL используется для объединения строк из двух или более таблиц на основе логической связи между ними.
Структура JOIN-запроса:
- Ключевое слово типа соединения:
INNER,LEFT [OUTER],RIGHT [OUTER],FULL [OUTER],CROSS. - Имя присоединяемой таблицы.
- Условие соединения: Ключевое слово
ONс предикатом илиUSINGдля столбцов с одинаковыми именами.
Основные типы JOIN:
-
INNER JOIN: Возвращает только строки, где есть совпадение в обеих таблицах.SELECT orders.id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.id; -
LEFT (OUTER) JOIN: Возвращает все строки из левой таблицы и совпадающие из правой. При отсутствии совпадения поля правой таблицы будутNULL.SELECT employees.name, departments.name AS dept_name FROM employees LEFT JOIN departments ON employees.dept_id = departments.id; -
RIGHT JOINиFULL JOIN: АналогичныLEFT JOIN, но приоритет отдается правой таблице или возвращаются все строки из обеих таблиц соответственно. -
CROSS JOIN: Возвращает декартово произведение (все возможные комбинации строк). -
SELF JOIN: Соединение таблицы с самой собой (требуется использование псевдонимов).SELECT e1.name AS employee, e2.name AS manager FROM employees e1 LEFT JOIN employees e2 ON e1.manager_id = e2.id;
Почему важен правильный выбор типа JOIN? INNER JOIN фильтрует данные, а LEFT JOIN сохраняет все записи основной таблицы, что критично для отчетов, где нужно видеть все сущности, даже без связанных данных.