Підлеглий запит – це „запит всередині іншого запиту”. Такі запити записуються в одній із умов в секції WHERE або HAVING.
Коли підлеглий запит міститься в секції WHERE, то його результати використовуються для відбору окремих рядків, дані із яких заносяться в таблицю результатів запиту.
Коли ж підлеглий запит міститься в секції HAVING, його результати використовуються для відбору груп рядків. На основі кожної відібраної групи рядків формується один підсумковий рядок таблиці результатів запиту.
Підлеглі запити можуть мати кілька рівнів вкладеності.
При порівнянні з результатом підлеглого запиту значення, що перевіряється, порівнюється з єдиним значенням, яке повертається підлеглим запитом.
При перевірці на входження у множину результатів підлеглого запиту (IN) значення виразу перевіряється на рівність одному із множини значень, які повертаються підлеглим запитом.
Перевірка на існування (EXISTS) дозволяє вияснити, чи повертає підлеглий запит хоч якісь значення.
При багатократному порівняння (перевірки AVY та ALL) значення виразу порівнюється з усіма значеннями, відібраними підлеглим запитом; щоб визначити – чи виконується умова порівняння хоча би для одного (AVY) чи для всіх (ALL) значень.
Оптимізація, яку автоматично виконують промислові СУБД, приводить до того, що некорельовані підлеглі занити виконуються один раз на початку виконання головного запиту.
- такі запити – самі ефективні (порівняно із корельованими запитами та запитами на з’єднання, які дозволяють розв’язати ту саму задачу).
Ефективність корельованих запитів та еквівалентних запитів на з’єднання – приблизно однакова.
?????