Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access часть2.doc
Скачиваний:
20
Добавлен:
14.08.2019
Размер:
6.24 Mб
Скачать

9.2. Использование подчиненных запросов в определении полей основного запроса.

Допустим, необходимо подсчитать количество клиентов, купивших какой-либо товар той или иной категории. Для этого создайте новый запрос, откройте его в режиме конструктора и добавьте таблицу Товары. В бланк запроса перетащите поле Марка. В определении следующих двух полей введите строки:

Категория: (SELECT [Категория] FROM [Типы] WHERE [Товары].[КодТипа]=[Типы].[КодТипа])

и

Количество клиентов: (SELECT Count([Заказы].[КодКлиента]) AS [Клиент] FROM Заказы INNER JOIN Заказано ON [Заказы].[КодЗаказа]=[Заказано].[КодЗаказа] WHERE ((([Заказано].[КодТовара])=[Товары].[Код Товара])))

Получившийся запрос изображен на рис. 9.2.

Рис. 9.2. Запрос, использующий подчиненные запросы в определении полей.

Пояснения

а). Первый подчиненный запрос выбирает для каждой марки товаров соответствующую ей категорию из таблицы Типы, а второй — подсчитывает количество клиентов в таблице Заказы, для заказов которых поле КодТовара в таблице Заказано совпадает с текущим кодом товара в таблице Товары. Для обоих подчиненных запросов проще сначала сделать соответствующие вспомогательные запросы, а затем скопировать их SQL-операторы в определения полей основного запроса.

б). Подчиненный запрос, возвращающий значения для поля Категория, можно и не использовать. Вместо этого нужно добавить в запрос таблицу Типы и перетащить поле Категория в бланк запроса (связь между таблицами Товары и Типы по полям КодТовара существует на уровне базы данных).

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

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

10. Свойства полей запросов

По умолчанию, поля запроса наследуют свойства полей базовой таблицы (таблицы, из которой они были получены), связанные с их отображением. Например, если свойство Формат поля для поля базовой таблицы имеет значение Денежный, то и соответствующее свойство поля запроса будет иметь то же значение — Денежный.

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

Особый смысл приобретает задание свойств для вычисляемых полей. В принципе, Microsoft Access автоматически определяет подходящий формат для них, но если вы хотите сами управлять способом отображения информации, вам необходимо воспользоваться диалоговым окном Свойства поля.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]