Для объединения запросов используется служебное слово UNION:
<запрос 1>
UNION [ALL]
<запрос 2>
Предложение UNION приводит к появлению в результирующем наборе всех строк каждого из запросов. При этом, если определен параметр ALL, то сохраняются все дубликаты выходных строк, в противном случае в результирующем наборе присутствуют только уникальные строки. Заметим, что можно связывать вместе любое число запросов. Кроме того, с помощью скобок можно задавать порядок объединения.
Операция объединения может быть выполнена только при выполнении следующих условий:
количество выходных столбцов каждого из запросов должно быть одинаковым;
выходные столбцы каждого из запросов должны быть совместимы между собой (в порядке их следования) по типам данных;
в результирующем наборе используются имена столбцов, заданные в первом запросе;
предложение ORDER BY применяется к результату соединения, поэтому оно может быть указано только в конце всего составного запроса.
Пример 5.7.1
Найти номера моделей и цены ПК и портативных компьютеров:
Консоль
SELECT model, price
FROM PC
UNION
SELECT model, price
FROM Laptop
ORDER BY price DESC;
| model
|
Price
|
| 1750 | 1200 |
| 1752 | 1150 |
| 1298 | 1050 |
| 1233 | 980 |
| 1321 | 970 |
| 1233 | 950 |
| 1121 | 850 |
| 1298 | 700 |
| 1232 | 600 |
| 1233 | 600 |
| 1232 | 400 |
| 1232 | 350 |
| 1260 | 350 |
|
Пример 5.7.2
Найти тип продукции, номер модели и цену ПК и портативных компьютеров:
Консоль
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 | 1750 | 1200 |
| Laptop | 1752 | 1150 |
| Laptop | 1298 | 1050 |
| PC | 1233 | 980 |
| Laptop | 1321 | 970 |
| PC | 1233 | 950 |
| PC | 1121 | 850 |
| Laptop | 1298 | 700 |
| PC | 1232 | 600 |
| PC | 1233 | 600 |
| PC | 1232 | 400 |
| PC | 1232 | 350 |
| PC | 1260 | 350 |
|
Рекомендуемые упражнения: 7, 24, 26, 29, 30, 32, 36, 37, 43, 44, 45, 48, 49, 51, 54, 56, 57, 113