WHERE Tovar = Kod_Tovaru
AND Vyrobnyk = Kod_Vyrobnyka
AND Vartist > = 2500)
| Tovary
|
Kod_Tovaru
| Kod_Vyrobnyka
| . . .
| Nazva
| . . .
|
|
|
|
|
|
|
| Zamovlennia
|
| No_Zamovlennia
| Tovar
| Vyrobnyk
| . . .
| Vartist
| . . .
|
|
|
|
|
|
|
|
- головний запит послідовно переглядає всі рядки таблиці Tovary, і для кожного виконується підлеглий запит.
Результатом підлеглого запиту є стовпчик даних, який містить номери всіх замовлень на „біжучий товар” вартістю не менше 2500. Якщо такі замовлення є (тобто, стовпчик не порожній), то перевірка EXISTS повертає значення TRUE.
Якщо підлеглий запит не дає жодного рядка замовлень, то перевірка EXISTS поверне значення FALSE.
Перевірка EXISTS ні за яких обставин не може повернути значення NULL.
Можна поміняти логіку перевірки, і використовувати форму NOT EXISTS. Тоді, якщо підлеглий запит не створює жодного рядка результату, то перевірка повертає TRUE; в іншому випадку – FALSE.
Предикат EXISTS на справді зовсім не використовує результати підлеглого запиту. Перевіряється тільки наявність рядків в таблиці результатів підлеглого запиту.
Тому в SQL є виняток з правила, згідно якого „підлеглий запит повинен повертати тільки один стовпчик даних”, і в підлеглому запиті перевірки EXISTS дозволяється використовувати форму SELECT *.
Попередній приклад можна переписати так:
86). Вивести список товарів, на які отримано замовлення вартістю 2500 або більше.
86).б). SELECT Nazva