13
С точки зрения использования в качестве источников данных при составле-
нии запроса, нет разницы между запросами и «постоянными» таблицами. В
языке SQL есть возможность не только обращаться по имени к созданным ра-
нее объектам – запросам, но и определять «вложенные» («подчиненные») за-
просы непосредственно внутри основного запроса.
Пример 1.10 (один из источников данных – вложенный запрос).
SELECT Клиент.Фамилия, Подписка2.Журнал
FROM Клиент, (SELECT * FROM Подписка) AS Подписка2
…
Ключевое слово «AS» задает имя (псевдоним), по которому следует обра-
щаться к полям временной таблицы, сформированной вложенным запросом, в
пределах «главного» запроса.
Результаты работы запросов в первом и втором примерах идентичны. Вло-
женный запрос в данном случае не имеет практического смысла. Однако вло-
женные запросы могут иметь и более сложную структуру, и в некоторых си-
туациях необходимы.
Вложенные запросы, в свою очередь, также могут содержать внутри себя
вложенные запросы.
Пример 1.11 (трехуровневый запрос, действует аналогично двум предыду-
щим).
SELECT Клиент.Фамилия, Подписка2.Журнал
FROM Клиент, (SELECT * FROM
(SELECT * FROM Подписка)
) AS Подписка2
…
В операторе «SELECT», применяемом при создании вложенных запросов,
могут быть использованы любые предложения, как и в операторах верхнего
уровня («FROM», «WHERE», «GROUP BY», «ORDER BY» …).
Действующий пример с использованием вложенного запроса будет приве-
ден ниже.
Вложенные запросы в предложении WHERE. Вложенные запросы могут
быть использованы не только в качестве источников данных, но и в предложе-
нии WHERE, при определении ограничений результирующего набора.
Пример 1.12. Пусть существует таблица
Зарплата(Номер
, ФИО, Оклад)
Запрос, выводящий ФИО и оклад работников, оклад которых выше средне-
го, может иметь следующий вид:
SELECT ФИО, Оклад
FROM Зарплата
WHERE Оклад >
(SELECT AVG(Оклад) FROM Зарплата)
ORDER BY ФИО;