Язык SQL позволяет использовать один запрос в качестве вспомогательного при вычислении результатов другого. Запрос, служащий частью более «крупного» запроса, приято называть подзапросом. Степень взаимной вложенности запросов не ограничивается и может быть произвольной.
Подзапрос – дополнительный метод манипуляции с несколькими таблицами. Подзапросы возвращают результаты внутреннего запроса во внешнее предложение и имеют две основные формы: некоррелированную и коррелированную.
Некоррелированная форма реализуется «изнутри наружу», то есть внешний запрос выполняет то или иное действие на основе результатов выполнения внутреннего запроса.
Коррелированную форму подзапроса можно представить как обратное действие: внешний оператор SQL предоставляет значения для внутреннего подзапроса, которые будут использоваться при его выполнении.
Пример:
Список руководителей лабораторий
SELECT DISTINCT Табельный номер, Фамилия, Имя, Отчество FROM СП_СЛ WHERE (Табельный номер IN (SELECT Код руководителя FROM ЛАБ))
SELECT Табельный номер, Фамилия, Имя, Отчество FROM СП_СЛ WHERE EXISTS (SELECT * FROM ЛАБ WHERE Код руководителя=СП_СЛ.Табельный номер)
Подзапросы в предложении WHERE