18c0693f

ЗАПРОС, ИСПОЛЬЗУЮЩИЙ NOT EXISTS


Выдать фамилии поставщиков, которые не поставляют деталь Р2 (обратная задача по отношению к примеру 5.3.1).

SELECT                ФАМИЛИЯ

FROM                   S

WHERE                NOT EXIST

(SELECT         *

FROM              SP

WHERE           НОМЕР_ПОСТАВЩИКА=

S.НОМЕР_ПОСТАВЩИКА

AND                НОМЕР_ДЕТАЛИ = 'Р2');

Результат:

фамилия

    Адамc

Этот запрос можно перефразировать: «Выбрать фамилии поставщиков таких, что не существует поставки, связывающей их с деталью Р2». Заметим, что легко преобразовать решение предыдущей задачи (пример 5.3.1) в решение данной.

Между прочим, заключенный в скобки подзапрос, входящий в выражение EXISTS, вовсе не обязательно должен использовать предложение SELECT вида «SELECT *». Можно использовать, например, предложение следующего вида: «SELECT имя-поля FROM...». Однако на практике оно почти всегда будет иметь вид «SELECT *», как уже было продемонстрировано в наших примерах.





Все публикации раздела