Ответ
JOIN — операция для объединения строк из двух или более таблиц на основе связанного столбца.
Основные виды:
-
INNER JOIN
- Возвращает только те строки, где есть совпадение в обеих таблицах.
SELECT users.name, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id;
- Возвращает только те строки, где есть совпадение в обеих таблицах.
-
LEFT (OUTER) JOIN
- Возвращает все строки из левой таблицы и совпадающие строки из правой. При отсутствии совпадений в правой таблице возвращаются
NULL.SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id; -- Покажет всех пользователей, даже без заказов
- Возвращает все строки из левой таблицы и совпадающие строки из правой. При отсутствии совпадений в правой таблице возвращаются
-
RIGHT (OUTER) JOIN
- Аналогичен
LEFT JOIN, но приоритет отдается правой таблице. Используется реже.
- Аналогичен
-
FULL (OUTER) JOIN
- Возвращает все строки из обеих таблиц. Если совпадения нет, для недостающих столбцов подставляется
NULL.
- Возвращает все строки из обеих таблиц. Если совпадения нет, для недостающих столбцов подставляется
-
CROSS JOIN
- Возвращает декартово произведение таблиц — каждая строка первой таблицы соединяется с каждой строкой второй.
SELECT sizes.size, colors.color 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;
- Соединение таблицы с самой собой (часто через псевдонимы). Используется для работы с иерархическими данными.