Подзапрос можно использовать в предложении FROM инструкции SELECT, что весьма похоже на использование представлений.

Подзапрос в предложении FROM инструкции SELECT называется также встроенным представлением. Подзапрос в предложении FROM инструкции SELECT определяет источник данных для этой конкретной инструкции SELECT (и только для нее). Как и в случае представления базы данных, инструкция SELECT в подзапросе может быть простой или сложной, в зависимости от потребностей.
Когда создается представление базы данных, связанная инструкция SELECT хранится в словаре данных. В ситуациях, когда отсутствуют необходимые привилегии на создание представлений базы данных или когда требуется протестировать, пригодна ли инструкция SELECT для создания представления, можно воспользоваться встроенным представлением.
Используя встроенные представления, можно хранить в одном месте весь программный код, необходимый для поддержки запроса. Это позволяет избежать сложности создания отдельного представления базы данных. В примере на рисунке показывается, как использовать встроенное представление для отображения названия отдела и города в Европе. Подзапрос в предложении FROM реализует выборку идентификатора местоположения, названия города и страны путем объединения трех разных таблиц. Выходные данные внутреннего запроса рассматриваются как таблица для внешнего запроса. Внутренний запрос сходен с запросом представления базы данных, но не имеет никакого физического имени.
Для примера, показанного на рисунке, таблица loc создается путем выполнения следующей инструкции:
CREATE TABLE loc AS SELECT * FROM locations; |
Такие же выходные данные, как и в примере на рисунке, можно вывести на экран, выполнив следующие два шага:
-
Создайте представление базы данных:
CREATE OR REPLACE VIEW european_cities AS SELECT l.location_id, l.city, l.country_id FROM loc l JOIN countries c ON(l.country_id = c.country_id) JOIN regions USING(region_id)
|
-
Объедините представление
EUROPEAN_CITIESс таблицейDEPARTMENTS:
SELECT department_name, city FROM departments
|
Далее: Функции CURRENT_DATE, CURRENT_TIMESTAMP и LOCALTIMESTAMP