WHERE Kod_Pracivnyka <> Kerivnyk)
Можна питання сформулювати таким чином:
Чи можна операцію NOT в перевірці NOT EXISTS перенести всередину підлеглого запиту?
Запит 93).в). виконує наступні дії: для кожного працівника вибираються філії, якими керує цей працівник. Якщо таких філій – немає, то дані про цього працівника заносяться у таблицю результатів запиту.
На відміну від цього, запит 93).д). виконує зовсім інші дії:
Для кожного працівника вибираються філії, якими не керує цей працівник. Якщо такі філії – є, то дані про цього працівника заносяться у таблицю результатів запиту. Оскільки завжди є філія, якою не керує даний працівник – то в результати запиту попадають дані про всіх працівників.
Тому запит 93).в). і 93).д). – не еквівалентні:
WHERE NOT EXISTS
(SELECT . . .
WHERE X Y)
- зовсім не те саме, що
(SELECT . . .
WHERE NOT (X Y))
Як вже зазначалося, перевірку = ANY можна представити перевіркою IN:
WHERE X = ANY (SELECT Y. . .)
- рівносильно перевірці
WHERE X IN (SELECT Y. . .)