Ответ
Для объединения данных из нескольких таблиц в SQL используются операторы JOIN (соединение по условию) и UNION (объединение наборов строк).
Операторы JOIN (основные):
-
INNER JOIN(или простоJOIN): Возвращает только те строки, где есть совпадение в обеих таблицах.SELECT orders.id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.id; -- Результат: только заказы, у которых есть клиент. -
LEFT JOIN(LEFT OUTER JOIN): Возвращает все строки из левой (первой) таблицы и совпадающие строки из правой. Если совпадения нет, поля из правой таблицы будутNULL.SELECT customers.name, orders.id FROM customers LEFT JOIN orders ON customers.id = orders.customer_id; -- Результат: все клиенты, даже те, кто не сделал ни одного заказа. -
RIGHT JOIN(RIGHT OUTER JOIN): АналогиченLEFT JOIN, но приоритет у правой таблицы. Используется реже. -
FULL JOIN(FULL OUTER JOIN): Возвращает все строки из обеих таблиц. Если совпадения нет, недостающие поля заполняютсяNULL. Поддержка зависит от СУБД. -
CROSS JOIN: Возвращает декартово произведение — каждую строку из первой таблицы со всеми строками из второй. Используется редко и с осторожностью.
Операторы для объединения результатов запросов (SET операторы):
UNION: Объединяет результаты двухSELECT, удаляя дубликаты. Столбцы должны совпадать по типам и количеству.SELECT city FROM suppliers UNION SELECT city FROM customers; -- Список уникальных городов и от поставщиков, и от клиентов.UNION ALL: Объединяет результаты сохраняя все дубликаты. Работает быстрееUNION, если дубли не нужно удалять.