Ответ
JOIN — это оператор SQL, предназначенный для объединения строк из двух или более таблиц на основе логической связи (условия соединения) между ними.
Основные типы JOIN:
| Тип JOIN | Описание |
|---|---|
INNER JOIN |
Возвращает только те строки, для которых есть совпадение в обеих таблицах. |
LEFT [OUTER] JOIN |
Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадений нет, поля правой таблицы заполняются NULL. |
RIGHT [OUTER] JOIN |
Возвращает все строки из правой таблицы и совпадающие строки из левой. Аналог LEFT JOIN с изменённым порядком таблиц. |
FULL [OUTER] JOIN |
Возвращает все строки из обеих таблиц. При отсутствии совпадения поля недостающей таблицы заполняются NULL. |
CROSS JOIN |
Возвращает декартово произведение строк обеих таблиц (все возможные комбинации). |
Синтаксис и примеры:
-- INNER JOIN: Заказы с информацией о клиентах
SELECT orders.id, customers.name, orders.total
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;
-- LEFT JOIN: Все клиенты и их заказы (если есть)
SELECT customers.name, orders.id
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
WHERE orders.id IS NULL; -- Найти клиентов без заказов
-- Множественный JOIN
SELECT u.name, o.amount, p.product_name
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id;
Ключевые моменты:
- Условие соединения (
ON) определяет, как связаны таблицы (часто по первичному и внешнему ключам). JOINможно комбинировать сWHERE,GROUP BY, агрегатными функциями и подзапросами.- Для соединения таблицы с самой собой используется SELF JOIN.