Підлеглі запити sql

Інструкція SELECT, яка відповідає формату і всіма правилами, прийнятим для інструкцій SELECT. Вона повинна бути укладена в круглі дужки.

додаткові відомості

Підлеглий запит можна використовувати замість вираження в списку полів інструкції SELECT або в пропозиціях WHERE і HAVING. Інструкція SELECT використовується в підпорядкованому запиті для завдання набору конкретних значень, що обчислюються в виразах пропозицій WHERE або HAVING.

Предикати ANY або SOME, є синонімами, використовуються для відбору записів в головному запиті, які задовольняють порівнянні з усіма записами, відібраними в підпорядкованому запиті. У наступному прикладі відбираються всі товари, ціна яких більше, ніж ціна будь-якого товару, проданого зі знижкою в 25 відсотків або більше:

SELECT * FROM Товари

WHERE Ціна> ANY

(SELECT Ціна FROM Замовлено

WHERE Знижка> = .25);

Предикат ALL використовується для відбору в головному запиті тільки тих записів, які задовольняють порівнянні з усіма записами, відібраними в підпорядкованому запиті. Якщо в попередньому прикладі предикат ANY замінити предикатом ALL, результат запиту буде включати тільки ті товари, чия ціна більше, ніж ціна всіх товарів, проданих зі знижкою 25 або більше. Ця умова є значно більш жорстким.

Предикат IN використовується для відбору в головному запиті тільки тих записів, які містять значення, що збігаються з одним з відібраних підлеглим запитом. Наступний приклад повертає всі товари, продані зі знижкою, більшою чи рівною 25 відсоткам:

SELECT * FROM Товари

WHERE КодТовара IN

(SELECT КодТовара FROM Замовлено

WHERE Знижка> = .25);

І навпаки, предикат NOT IN використовується для відбору в головному запиті тільки тих записів, які містять значення, що не збігаються ні з одним з відібраних підлеглим запитом.

Предикат EXISTS (з необов'язковим зарезервованим словом NOT) використовується в логічному вираженні для визначення того, чи повинен підлеглий запит повертати будь-які записи.

У підпорядкованому запиті можна використовувати псевдоніми таблиць для посилання на таблиці, перераховані в реченні FROM, розташованому поза підлеглого запиту. У наступному прикладі відбираються прізвища та імена співробітників, чия зарплата дорівнює або більше середньої зарплати співробітників, що мають ту ж посаду. В даному прикладі таблиця «Співробітники» отримує псевдонім «Т1»:

Ім'я, Посада, Оклад

FROM Співробітники AS T1

WHERE T1.Должность = Сотруднікі.Должность) Order by Посада;

В останньому прикладі зарезервоване слово не є обов'язковим.

Деякі підлеглі запити можна використовувати в перехресних запитах як предикати (в реченні WHERE). Підлеглі запити, які використовуються для виведення результатів (в списку SELECT), не можна використовувати в перехресних запитах.