Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML. Токмаков Г.П. - 94 стр.

UptoLike

Составители: 

94
В приведенном запросе вложенный запрос вычисляет одну и ту же сумму
плановых объемов продаж всех офисов, которая затем умножается на
0,1 (10%).
Полученное значение используется в условии отбора при сканировании табли-
цы
SLUZHASCHIE на предмет поиска нужных строк.
Далее рассмотрим более сложный пример, приведенный в предыдущем
разделе
SELECTCITY
FROMOFFISY
WHERETARGET>(SELECTSUM(QUOTA)
FROMSLUZHASCHIE
WHERESLUZHASCHIE.ID_OFC=OFFISY.ID_OFC)
На Рис. 4.1. приведена схема выполнения этого запроса, в котором вло-
женный запрос возвращает различные результаты для каждого офиса.
1. Главный запрос извлекает данные из таблицы
OFFISY.
2. Условие предложения
WHERE обеспечивает отбор офисов, включаемых в
таблицу результатов запроса. Это условие поочередно применяется ко всем
строкам таблицы
OFFISY.
3. В предложении
WHERE сравнивается значение текущей строки в столбце
TARGET со значением, возвращаемым вложенным запросом.
4. Для каждой строки результирующей таблицы выполняется свой вложен-
ный запрос, вычисляющий сумму плановых объемов продаж для служащих те-
кущего офиса.
Таблица OFFISY
Таблица SLUZHASCHIE
ID_SLZH ID_OFFICE
ID_OFFICE CITY TARGET
22 2111 $575 000.00
11 2102 $675 000.00
12 2103 $800 000.00
Таблица SLUZHASCHIE
ID_SLZH ID_OFFICE
SELECT SUM(QUOTA)
FROM СЛУЖАЩИЕ С
WHERE С.ID_OFFICE=11
>?
SELECT SUM(QUOTA)
FROM СЛУЖАЩИЕ С
WHERE С.ID_OFFICE=12
>?
Рис. 4.1. Выполнение вложенного запроса в предложении WHERE