Следует заметить, что для объединения с помощью операции UNION таблицы результатов запросов должны содержать одинаковое количество однотипных столбцов, которые не должны быть отсортированы. Результат объединения можно отсортировать. Поскольку столбцы могут иметь разные имена, они сортируются по номерам 1, 2 и так далее.
Объединение можно производить неоднократно.
Запросы к нескольким таблицам:
Для их выполнения нужно связать таблицу по некоторым общим полям.
13. Вывести список служащих фирм с объемом продаж свыше $300000, включая города и регионы, в которых они работают,
SELECT Имя, Город, Регион
FROM Служащие, Фирмы
WHERE Cлужащие.Фирма=Фирмы.Фирма
AND Фирмы.Объем_продаж >=300000
Результат:
Имя Город Регион
Bill Adams Atlanta Eastern
Mary Jones New York Eastern
.… …. ….
Применение подчиненных запросов:
Подчиненным называется запрос, содержащийся в предложении WHERE или HAVING другой инструкции SQL.
14. Вывести список городов с фирмами, для которых плановый объем продаж превышает среднее значение плановых объемов продаж всех фирм.
SELECT Город
FROM Фирмы
WHERE Объем_продаж >
(SELECT AVG(Объем_продаж)
FROM Служащие)
ORDER BY Город
Результат:
Atlanta
Chicago
New York
Операции UNION, INTERSECT* и EXCEPT*:
(для SQL2)
15. Вывести список товаров, для которых имеются заказы на сумму более $30000, а также тех товаров, которых на складе имеется на сумму более $30000.
(SELECT Товар
FROM Заказы
WHERE Сумма > 30000)
UNION
(SELECT Код_товара
FROM Товары
WHERE (Цена*Количество) > 30000)
Результат:
2A44L
4100Y
16. Вывести список товаров, для которых имеются заказы на сумму более $30000, и которых при этом на складе имеется на сумму более $30000.
(SELECT Товар
FROM Заказы
WHERE Сумма > 30000)
INTERSECT
(SELECT Код_товара
FROM Товары
WHERE (Цена*Количество) > 30000)
17. Вывести список товаров, для которых имеются заказы на сумму более $30000, за исключением тех, которые стоят менее $1000.