FirebirdSQL logo

Подзапросы

Подзапрос — это специальный вид выражения, которое фактически является запросом, встроенным в другой запрос.Подзапросы пишутся как обычные SELECT запросы, но должны быть заключены в круглые скобки.Выражения подзапроса используется следующими способами:

  • Для задания выходного столбца в списке выбора SELECT;

  • Для получения значений или условий для предикатов поиска (предложения WHERE, HAVING);

  • Для создания набора данных, из которого включающий запрос может выбирать, как будто это обычная таблица или представление.Подобные подзапросы появляются в предложении FROM (производные таблицы) или в общем табличном выражении (CTE).

Коррелированные подзапросы

Подзапрос может быть коррелированным (соотнесённым). Запрос называется коррелированным, когда подзапрос и основной запрос взаимозависимы.Это означает, что для обработки каждой записи подзапроса, должна быть получена также запись из основного запроса, т.е.подзапрос всецело зависит от основного запроса.

Example 1. Коррелированный подзапрос
SELECT *
FROM Customers C
WHERE EXISTS
      (SELECT *
       FROM Orders O
       WHERE C.cnum = O.cnum
         AND O.adate = DATE '10.03.1990');

При использовании подзапросов для получения значений выходного столбца в списке выбора SELECT, подзапрос должен возвращать скалярный результат.