Ответ
Основные типы JOIN в SQL: INNER JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, FULL (OUTER) JOIN.
Пример 1: INNER JOIN Выборка заказов только для активных пользователей.
SELECT
u.id AS user_id,
u.name AS user_name,
o.id AS order_id,
o.total_amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id -- Ключевое условие соединения
WHERE u.is_active = TRUE;
Пример 2: LEFT JOIN Выборка всех пользователей, даже если у них нет заказов.
SELECT
u.name,
COUNT(o.id) AS order_count -- Будет 0 для пользователей без заказов
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name;
Пример 3: JOIN с несколькими таблицами и агрегацией
SELECT
u.name,
p.name AS product_name,
SUM(oi.quantity) AS total_quantity_purchased
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id
WHERE o.status = 'completed'
GROUP BY u.id, u.name, p.id, p.name
ORDER BY total_quantity_purchased DESC;
Ключевой момент: INNER JOIN возвращает только строки, где есть совпадение в обеих таблицах. LEFT JOIN возвращает все строки из левой таблицы (users), дополняя их данными из правой (orders) или NULL, если совпадений нет.