Инструменты пользователя

Инструменты сайта


examination:bd:question30

Вопрос№30.Подчиненные запросы

Подчиненный запрос - это оператор 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 дети);
examination/bd/question30.txt · Последние изменения: 2014/01/15 12:11 (внешнее изменение)