Субд лекции

Темы:

Подчиненные запросы SQL

Подчиненный запрос - это оператор SELECT, вложенный в операторы SELECT, SELECT..INTO, INSERT...INTO, DELETE или UPDATE либо в другой подчиненный запрос.

Вложенный запрос в общем случае возвращает какое-то множество записей. Для отбора этих записей во внешнем запросе могут быть использованы:

сравнение [ANY | ALL | SOME] (оператор);

выражение [NOT] IN (оператор);

[NOT] EXISTS (оператор),

где

сравнение -   выражение и оператор сравнения, сравнивающий это выражение с результатом выполнения подчиненного запроса;

выражение - выражение, которое должно быть найдено в наборе записей, являющихся результатом выполнения подчиненного запроса;

оператор -    правильный оператор SELECT, заключенный в круглые скобки, который и является вложенным запросом.

Подчиненный запрос обычно используется в предложении WHERE или HAVING.

Предикаты ANY или SOME являются синонимами. Они используются для отбора в главном запросе записей, которые удовлетворяют сравнению с какой-либо из записей, отобранных в подчиненном запросе.

В операторе подчиненного запроса SELECT нельзя задавать запрос на объединение или перекрестный запрос.

Ниже в виде вложенного запроса представлен запрос «Список сотрудников, имеющих детей»:

SELECTсотрудник.ФИО

FROMсотрудник

WHEREсотрудник.код_сотрудника=АNY (SELECT код_сотрудника

FROM дети);

Этот же запрос может быть представлен с использованием предиката IN:

SELECT фио

FROMсотрудник

WHEREкод_сотрудника IN

(SELECT код_сотрудника

FROM дети);

Список сотрудников, не имеющих детей, можно выдать, используя запрос

SELECT фио

FROMсотрудник

WHEREкод_сотрудника NOT IN

(SELECT код_сотрудника

FROM дети);

предыдущаяследующая