Ответ
В SQL JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца. Основные виды:
1. INNER JOIN
Возвращает только те строки, для которых условие соединения (ON) истинно в обеих таблицах.
-- Найти всех пользователей с их заказами
SELECT u.name, o.order_id
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
2. LEFT (OUTER) JOIN
Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадения нет, для столбцов правой таблицы возвращается NULL.
-- Найти всех пользователей, даже если у них нет заказов
SELECT u.name, o.order_id
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
3. RIGHT (OUTER) JOIN
Аналогичен LEFT JOIN, но возвращает все строки из правой таблицы. Используется реже, так как его всегда можно выразить через LEFT JOIN, поменяв таблицы местами.
4. FULL (OUTER) JOIN
Возвращает все строки и из левой, и из правой таблицы. Строки, для которых нет совпадения, дополняются NULL.
5. CROSS JOIN Возвращает декартово произведение таблиц — каждая строка первой таблицы соединяется с каждой строкой второй. Может быть ресурсоемким.
-- Создать комбинации всех размеров и цветов товара
SELECT sizes.name, colors.name
FROM sizes
CROSS JOIN colors;
6. SELF JOIN Соединение таблицы с самой собой. Полезно для иерархических данных (например, сотрудник -> менеджер).
-- Найти сотрудников и их непосредственных руководителей
SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;
Ключевой момент для производительности: Наличие индексов на столбцах, участвующих в условии ON, критически важно для скорости выполнения JOIN на больших таблицах.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶