Подзапросы с кванторами any и all
Ключевые
слова all
и
any
модифицируют
операцию сравнения, которая формирует
подзапрос.
·>all
означает
больше чем любое значение или, что
равносильно, больше максимальной
величины. Например, >all (1,2,3) означает
больше чем 3.
>any
означает
больше, по крайней мере, одного значения
или, что равносильно, больше минимальной
величины. Поэтому, >any (1,2,3) означает
меньше 1.
Квантор
=all
означает
равенство каждому возвращаемому
значению. Текущая строка будет
удовлетворять условию, указанному во
внешнем запросе, если значение в
сравниваемом столбце будет равно каждому
значению, которое возвращается
подзапросом.
Квантор
=any
означает
проверку существования, поэтому он
эквивалентен условию in
(в).
Например, чтобы найти всех авторов,
которые живут в одном городе с некоторым
издателем, можно использовать как =any,
так и in:
Однако,
квантор !=any
будет
не равносилен условию not
in
(не в). Квантор !=any
означает
“не а или
не
в или
не
с”, в то время как условие not
in означает
“не а и
не
в и
не
с”.
Задание
11. Стоимость,
каких книг, больше чем максимальная
стоимость, книг издательства 1. Сохранить
как П11.
SELЕCT
*
FROM
Книги
WHЕRE
[Стоимость книги]>ALL
(SELЕCT
[Стоимость книги]
FROM
Книги
WHЕRE
Книги![Код издательства] = 1);
Задание
12. Найти
книги, которые стоят больше чем самая
книга с минимальной стоимостью в группе
«Информатика».
Сохранить как П12.
SELЕCT
*
FROM
Книги
WHЕRE
[Стоимость книги]>ANY
(SELЕCT
[Стоимость книги]
FROM
Книги
WHЕRE
[Предметная область] =”Информатика”);
Задания для самостоятельной работы
-
Выдать
названия всех книг, цена которых выше
общей средней цены.
-
Выдать
названия книг, срок службы которых выше
среднего.
-
Выдать
названия издательств, книги которых
хранятся в архиве.