Проверка на существование
С помощью проверки на существование (предикат EXISTS) можно выяснить, содержится ли в таблице вложенного запроса хотя бы одна строка, удовлетворяющая условию отбора. Аналогичной проверки в простой инструкции SELECT не существует. Эта проверка возможна только во вложенном запросе.
Допустим, что требуется вывести список товаров, на которые получен заказ стоимостью $20 000.00 или больше. Чтобы решить эту задачу путем выполнения вложенного запроса с проверкой на существование, перефразируем эту задачу следующим образом: вывести список товаров, для которых в таблице ZAKAZY существует, по крайней мере, один заказ, удовлетворяющий условиям: является заказом на данный товар и имеет стоимость не менее $20 000.00.
Инструкция SELECT, используемая для решения поставленной задачи имеет вид
SELECT DESCRIPTION
FROM TOVARY
WHERE EXISTS (SELECT ID_ORDER
FROM ZAKAZY
WHERE ZAKAZY.ID_PRD = TOVARY.ID_PRD AND
ZAKAZY.ID_MFR = TOVARY.ID_MFR AND
ZAKAZY.PRICE >= 20000.00)
DESCRIPTION |
Деталь кузова |
В данном случае главный запрос последовательно просматривает все строки таблицы TOVARY и для каждой строки выполняется вложенный запрос. Результатом вложенного запроса является набор данных, содержащий номера всех заказов текущего товара на сумму не меньше чем $20 000.00.
Если такие заказы есть (т.е. набор данных не пустой), то проверка EXISTS возвращает TRUE. Если вложенный запрос не возвращает ни одной строки, то проверка EXISTS возвращает значение FALSE. Эта проверка никогда не возвращает NULL.
Дата добавления: 2015-02-03; просмотров: 771;