– 96 –
зультате выполнения вложенного запроса выводится несколько строк или
столбцов, то сравнение теряет смысл и СУБД выводит сообщение об ошибке.
В случае возвращения вложенным запросом значения NULL или если не бу-
дет выведено ни одной строки, то операция сравнения вернет значение
NULL.
Проверка на принадлежность результатам вложенного
запроса
Проверка на принадлежность результатам вложенного запроса, включенно-
го в состав предиката
IN, является аналогом проверки на членство в множестве.
Текущее значение проверяемого выражения главного запроса сравнивается со
столбцом значений, возвращаемых вложенным запросом. Если это значение
равно одному из элементов столбца, то проверка дает результат
TRUE и текущая
строка включается в результирующую таблицу.
Приведем пример запроса, использующего проверку на принадлежность
результатам вложенного запроса:
вывести список служащих тех офисов, где
фактический объем продаж превышает плановый
.
SELECTFAMILY,NAME
FROMSLUZHASCHIE
WHERESLUZHASCHIE.ID_OFCIN(SELECTOFFISY.ID_OFC
FROMOFFISY
WHERESALES>TARGET)
FAMILY NAME
Филатов Петр
Петров Петр
Вложенный запрос возвращает список идентификаторов офисов, где фак-
тический объем продаж превышает плановый (в учебной базе данных есть два
таких офиса
с идентификаторами 12 и 22). Главный запрос проверяет каждую
строку таблицы
SLUZHASCHIE, чтобы определить, работает ли данный служащий
в одном из отобранных офисов.
В приведенном примере вложенный запрос возвращает в качестве резуль-
тата множество значений, а предложение
WHERE главного запроса проверяет ра-
венство значения из строки таблицы главного запроса одному из значений по-
лученного множества. Таким образом, проверка
IN с вложенным запросом вы-
полняется аналогично проверке
IN в инструкции SELECT.
Проверка на существование
С помощью проверки на существование (предикат
EXISTS) можно выяс-
нить, содержится ли в таблице вложенного запроса хотя бы одна строка, удов-
летворяющая условию отбора. Аналогичной проверки в простой инструкции
SELECT не существует. Эта проверка возможна только во вложенном запросе.
Допустим, что требуется
вывести список товаров, на которые получен за-
каз стоимостью
$20000.00 или больше. Чтобы решить эту задачу путем вы-
полнения вложенного запроса с проверкой на существование, перефразируем
эту задачу следующим образом: вывести список товаров, для которых в табли-