Чтобы объединить два запроса в SQL, можно использовать несколько подходов в зависимости от того, что именно вы хотите получить в результате. Вот наиболее распространенные методы:
Использование UNION и UNION ALL
- UNION объединяет результаты двух или более SELECT-запросов и удаляет дубликаты.
- UNION ALL объединяет результаты двух или более SELECT-запросов и сохраняет все дубликаты.
Пример:
SELECT имя, фамилия FROM студенты
UNION
SELECT имя, фамилия FROM преподаватели;
Использование JOIN
- INNER JOIN возвращает строки, которые имеют совпадения в обеих таблицах.
- LEFT JOIN (или LEFT OUTER JOIN) возвращает все строки из левой таблицы и совпадающие строки из правой таблицы.
- RIGHT JOIN (или RIGHT OUTER JOIN) возвращает все строки из правой таблицы и совпадающие строки из левой таблицы.
- FULL JOIN (или FULL OUTER JOIN) возвращает строки, когда есть совпадения в одной из таблиц.
Пример:
SELECT студенты.имя, преподаватели.фамилия
FROM студенты
INNER JOIN преподаватели ON студенты.преподаватель_id = преподаватели.id;
Использование подзапросов
Подзапросы позволяют использовать результат одного запроса в другом запросе.
Пример:
SELECT имя, (SELECT фамилия FROM преподаватели WHERE преподаватели.id = студенты.преподаватель_id) AS фамилия_преподавателя
FROM студенты;
Использование CTE (Common Table Expressions)
CTE позволяет определить временный набор результатов, который может быть использован в основном запросе.
Пример:
WITH преподаватели_cte AS (
SELECT id, фамилия FROM преподаватели
)
SELECT студенты.имя, преподаватели_cte.фамилия
FROM студенты
INNER JOIN преподаватели_cte ON студенты.преподаватель_id = преподаватели_cte.id;
Каждый из этих методов имеет свои преимущества и может быть использован в зависимости от задачи, которую вы хотите решить.