Использование подчиненных запросов в выражениях для условий отбора записей

Допустим, необходимо выбрать заказы, размещенные в 1998 году и имеющие стоимость выше средней за 1998 год. Создайте новый запрос, откройте его в режиме конструктора и добавьте в его макет таблицы Заказы и Заказано. В бланк запроса перетащите поля КодЗаказа, Код Клиента и Дата Размещения из таблицы Заказы. В определение следующего поля введите строку:

Сумма: ССиr([Заказано].[Цена] *[Количество]*(1-[Скидка])/100)*100

Для поля ДатаРазмещения задайте условие отбора: Between #01.01.98# And #31.12.98#, а для поля Сумма задайте порядок сортировки по убыванию и в графе Условие отбора введите строку:

>(SELECT Avg(CCur([3aкaзaнo].[Цeнa]*[Количecmвo]*(1-[Cкuдкa])/100)*100) AS Сумма FROM Заказы INNER JOIN Заказано ON Заказы.КодЗаказа = Заказано.КодЗаказа WHERE (((Заказы.ДатаРазмещения) Between #1/1/1998# And #12/31/1998#)))

Полученный запрос изображен на рис. 9.1.

Рис. 9.1. Запрос, использующий подчиненный запрос в выражении для условия отбора записей.

Пояснения

а). Удобнее сначала создать и отладить запрос, который должен быть подчиненным, а затем скопировать строку SQL-оператора в главный (основной) запрос.

б). В данной ситуации подчиненный запрос должен возвращать только одно значение, в противном случае Microsoft Access выдаст сообщение об ошибке и основной запрос работать не будет.

в). Описанный выше запрос работает следующим образом — вначале выполняется подчиненный запрос, возвращающий значение средней стоимости всех заказов, размещенных в 1998 году, а затем это значение используется в условии отбора для ограничения возвращаемых основным запросом записей.

г). В этом примере использование подчиненного запроса неизбежно. Заменить его какой-нибудь другой конструкцией без излишнего усложнения не удастся.

д). Строка SQL-оператора подчиненного запроса не содержит точку с запятой и с обе их сторон обязательно заключается в круглые скобки.

е). Обратите внимание, что после повторного открытия запроса в режиме конструктора в бланке запроса будет содержаться копия поля Сумма, для которой и задано условие, использующее подчиненный запрос.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: