Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Коррелированные подзапросы
Коррелированные подзапросы
Когда элемент данных, полученный из вложенного подзапроса, должен быть выбран в контексте связи значения с текущей строкой главного запроса, возможно использование коррелированного подзапроса. Firebird требует явно указанных идентификаторов в коррелированных подзапросах.
В следующем примере связываемые столбцы в главном запросе и в подзапросе являются коррелированными; здесь использованы алиасы таблиц для устранения какой- либо неясности:
SELECT
M.LAST_NAME,
M.FIRST_NAME,
M.ADDRESS1,
M.ADDRESS2,
M.POSTCODE,
(SELECT R.START_TIME FROM ROUTES R
WHERE R.POSTCODE = M.POSTCODE AND M.DOW = 'MONDAY') AS START_TIME
FROM MEMBERSHIP M
WHERE . . .
Этот запрос возвращает одну строку для каждого выбранного элемента, независимо от того, существует ли соответствие между полями POSTCODE обеих таблиц. Если нет соответствия, то поле START_TIME будет иметь значение NULL.