Занятие 22. Операторы JOIN и UNION
⚡ Кратко: команды занятия
SELECT ... FROM t1 INNER JOIN t2 ON ...SELECT ... FROM t1 LEFT JOIN t2 ON ...SELECT ... FROM t1 RIGHT JOIN t2 ON ...SELECT ... FROM t1 CROSS JOIN t2SELECT ... UNION [ALL] SELECT ...
🔖 Справочник операторов
INNER JOIN
SELECT *
FROM employees AS e
INNER JOIN employee_privileges AS ep
ON e.id = ep.employee_id;
Возвращает только сотрудников, у которых есть записи в employee_privileges.
LEFT JOIN
SELECT *
FROM employees AS e
LEFT JOIN employee_privileges AS ep
ON e.id = ep.employee_id;
Возвращает всех сотрудников. Для тех, у кого нет привилегий, столбцы из employee_privileges будут NULL.
RIGHT JOIN
SELECT *
FROM employees AS e
RIGHT JOIN employee_privileges AS ep
ON e.id = ep.employee_id;
Возвращает все записи из employee_privileges и подходящих сотрудников.
CROSS JOIN
SELECT *
FROM products AS p
CROSS JOIN categories AS c;
Каждый продукт соединяется с каждой категорией. Результат: count(products) × count(categories) строк.
UNION
SELECT first_name, last_name FROM employees
UNION
SELECT first_name, last_name FROM customers;
Общая выборка имён и фамилий без дубликатов.
UNION ALL
SELECT first_name, last_name, 'employee' AS status
FROM employees
UNION ALL
SELECT first_name, last_name, 'customer' AS status
FROM customers;
Общая выборка с пометкой источника каждой строки. Дубликаты сохраняются.
Многотабличный JOIN
SELECT od.order_id, p.product_name, po.payment_amount
FROM order_details AS od
LEFT JOIN products AS p
ON od.product_id = p.id
LEFT JOIN purchase_orders AS po
ON od.purchase_order_id = po.id;
🔗 Полный справочник
Более полный каталог SQL-операторов курса — в справочнике SQL.