При необходимости объединения нескольких однотипных результирующих наборов данных используют оператор UNION.
Пример. Показать цену товаров и цену товаров со скидкой. Скидка на товары, цена которых > 100 р. – 3%, остальных – 5%.
SELECT Товары.КодТовара, Товары.ТипТовара, Товары.МаркаТовара, Товары.Цена, [Товары]![Цена]*1.03 AS [Цена со скидкой]
FROM Товары
WHERE Товары.Цена>100
UNION
SELECT Товары.КодТовара, Товары.ТипТовара, Товары.МаркаТовара, Товары.Цена, [Товары]![Цена]*1.05 AS [Цена со скидкой]
FROM Товары
WHERE Товары.Цена<=100;
Структурированные, или вложенные, запросы
Подзапрос, или вложенный запрос, – дополнительный метод манипуляции данными на основе нескольких таблиц. Подзапрос – оператор SELECT, вложенный в:
- предложение SELECT;
- предложение WHERE;
- предложение HAVING;
- оператор INSERT;
- оператор UPDATE;
- оператор DELETE.
Пример синтаксиса подзапроса, вложенного в предложение SELECT.
Select <список полей>
From<список таблиц>
Where<условия выборки строк>
(Select <список полей>
From<список таблиц>
|
|
Where<условия выборки строк>)
Пример. Найти покупателя самого большого заказа.
SELECT Заказ.НазваниеКомпании, Заказ.СтоимостьДоставки + Заказ.Количества * Товары.Цена AS [Стоимость заказа]
FROM Товары INNER JOIN Заказ ON Товары.КодТовара = Заказ.КодТовара
WHERE Заказ.СтоимостьДоставки+Заказ.Количества*Товары.Цена=
(SELECT MAX(Заказ.СтоимостьДоставки + Заказ.Количества * Товары.Цена) AS [Стоимость заказа]
FROM Товары INNER JOIN Заказ ON Товары.КодТовара = Заказ.КодТовара);
Запросы на удаление
Оператор DELETE предназначен для удаления группы записей из объекта. Удаляются все записи из объекта, удовлетворяющие условию поиска. Если опустить WHERE <условия поиска>, из объекта будут удалены все записи.
Формат оператора DELETE:
DELETE FROM <объект>
[Where<условия поиска>]
Пример. Удалить все счета за прошлый год.
DELETE *
FROM Счет
WHERE Счет.ДатаСчета Like "*.*.2005";
В запросах на удаление возможно использование подзапросов.