Для объединения запросов используется служебное слово UNION:
<запрос 1>
UNION [ALL]
<запрос 2>
Оператор UNION объединяет выходные строки каждого из запросов в один результирующий набор. Если определен параметр ALL, то сохраняются все дубликаты выходных строк, в противном случае в результирующем наборе остаются только уникальные строки. Заметим, что можно связывать вместе любое число запросов. Кроме того, с помощью скобок можно менять порядок объединения.
При этом должны выполняться следующие условия:
§ Количество выходных столбцов каждого из запросов должно быть одинаковым.
§ Выходные столбцы каждого из запросов должны быть сравнимыми между собой (в порядке их следования) по типам данных.
§ В результирующем наборе используются имена столбцов, заданные в первом запросе.
§ Предложение ORDER BY применяется к результату соединения, поэтому оно может быть указано только в конце составного запроса.
Пример. Найти номера моделей и цены ПК и ПК-блокнотов:
| SELECT model, price FROM PC UNION SELECT model, price FROM Laptop ORDER BY price DESC;
|
| model
| price
|
|
| 1200.0
|
|
| 1150.0
|
|
| 1050.0
|
|
| 980.0
|
|
| 970.0
|
|
| 950.0
|
|
| 850.0
|
|
| 700.0
|
|
| 600.0
|
|
| 600.0
|
|
| 400.0
|
|
| 350.0
|
|
| 350.0
|
Пример. Найти тип продукции, номер модели и цену ПК и ПК-блокнотов:
| SELECT Product .type, PC.model, price FROM PC INNER JOIN Product ON PC.model = Product .model UNION SELECT Product .type, Laptop.model, price FROM Laptop INNER JOIN Product ON Laptop.model = Product .model ORDER BY price DESC;
|
| type
| model
| price
|
| Laptop
|
| 1200.0
|
| Laptop
|
| 1150.0
|
| Laptop
|
| 1050.0
|
| PC
|
| 980.0
|
| Laptop
|
| 970.0
|
| PC
|
| 950.0
|
| PC
|
| 850.0
|
| Laptop
|
| 700.0
|
| PC
|
| 600.0
|
| PC
|
| 600.0
|
| PC
|
| 400.0
|
| PC
|
| 350.0
|
| PC
|
| 350.0
|