Проверка на существование

С помощью проверки на существование (предикат 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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: