Підлеглим називається запит, який міститься в секції WHERE*) або HAVING*) іншого оператора SQL
*) зауваження: в стандарті SQL2 допускаються підлеглі запитів в секції FROM: зараз ведуться роботи над створенням стандарту SQL3 – в ньому будуть допустимі підлеглі запити в секції SELECT.
Підлеглі запити дуже корисні – вони дозволяють опрацьовувати запити, виражені через результати інших запитів.
Ось приклад такого запиту:
81). Вивести список філій, для яких плановий об’єм продаж відрізняється від суми планових об’ємів продаж всіх працівників.
- це потрібно, наприклад, для аналізу системи планування фірми (щоб виявити помилки планування).
Filii
Kod_ Filii
Misto
. . .
Plan
. . .
1 : N (=)
Pracivnyky
Kod_Prac
Prizv
. . .
Filia
. . .
Plan
. . .
- в цьому завданні потрібно отримати список міст із таблиці Filii, для яких значення стовпчика Plan задовольняє деякій умові.
Можна припустити, що SQL – оператор SELECT, який відповідає такому запиту, повинен виглядати приблизно так:
SELECT Misto
FROM Filii
WHERE Plan <>
- в цьому запиті величина дорівнює сумі планових об’ємів продаж всіх працівників даної філії.
Як цю суму можна обчислити в такому запиті?
Ми вже знаємо (див. 7. Агрегатні функції), що суму планових об’ємів продаж працівників деякої філії (наприклад, філії з кодом 21) можна отримати таким чином:
SELECT SUM (Plan)
FROM Pracivnyky
WHERE Filia = 21
Як результати цього запиту вставити у попередній замість ?
- очевидно, потрібно спочатку написати перший запит, а потім замінити другим: