Создание запросов к нескольким таблицам
Для добавления в запрос нескольких таблиц нужно выполнить следующие действия:
-
Открыть диалоговое окно Добавление таблицы;
-
Выделить в списке название нужной таблицы и щелкнуть на кнопке Добавить.
-
Повторить второе действие для всех нужных в запросе таблиц.
-
Щелкнуть на кнопке Закрыть.
Программа Access автоматически отображает линии объединения между связанными таблицами.
Добавление полей из нескольких таблиц
Когда в окно конструктора запроса добавлены все необходимые таблицы, включение их полей в запрос ничем не отличается от аналогичной операции с одной таблицей:
-
Можно перемещать любые поля любых таблиц, просто перетягивая их в ячейки строки Поле.
-
Можно выбирать названия полей из внутреннего списка ячеек строки Поле.
-
Чтобы не замусоривать внутренний список ячейки строки Поле, в строке Таблица выбрать название таблицы. Тогда в списке установится фильтр на названия полей только выбранной таблицы.
Затем можно приступать к установке критериев, сортировке, созданию вычисляемых столбцов и прочим операциям, которые ничем не отличаются от однотабличных запросов. При создании многотабличных запросов следует обращать внимание на наличие в разных таблицах полей с одинаковыми именами. Для того, чтобы не запутаться с этими полями в некотором выражении следует дополнять имя поля именем таблицы в следующем формате:
[ИмяТаблицы]. [ИмяПоля]
Создание расширенных запросов Создание сводных запросов
Сводные запросы содержат столбец, в котором выполняется операция агрегирования данных (к примеру, суммирования или вычисления среднего значения) определенного поля (или полей). В результате этого агрегирования получается либо одно значение для всего динамического набора данных, либо совокупность значений для заданных групп записей. В таблице 11 перечислены операции, которые можно использовать в сводных запросах.
Таблица 11. Операции агрегирования, доступные в сводных запросах
Операция
|
Цель операции
|
Группировка
|
Группировка записей по уникальным значениям некоторого поля
|
Sum
|
Суммирование значений поля
|
Avg
|
Вычисление среднего значения поля
|
Min
|
Вычисление минимального значения поля
|
Max
|
Вычисление максимального значения поля
|
Count
|
Вычисление количества записей
|
StDev
|
Вычисляет стандартное отклонение значений поля
|
Var
|
Вычисляет дисперсию значений поля
|
Last
|
Возвращает последнее значение поля
|
Выражение
|
Возвращает суммарное значение, основанное на выражении вычисляемого столбца
|
Условие
|
Устанавливает критерий для фильтрации записей перед вычислением итогов
|
Перед тем как начать работу с операциями агрегирования, нужно выполнить одно из следующих действий:
-
Выбрать в меню команду Вид – Групповые операции.
-
Щелкнуть на кнопке Групповые операции панели инструментов.
При этом программа добавляет в сетку конструктора строку Групповая операция, в каждой ячейки которой перечислены все доступные операции агрегирования (рис. 15).
Рис. 15. Отображение строки Групповая операция
Настройка сводного запроса по одному полю
В простейшем случае в запросе участвует всего одна математическая операция агрегирования, выполняемая по одному полю. В поле выполнения такого запроса программа Access отображает результат этой операции. Для создания сводного запроса по одному полю нужно выполнить следующие действия:
-
Отобразить строку Групповая операция, если она еще не присутствует в конструкторе запроса.
-
В этой строке в столбце нужного поля нужно выбрать из списка требуемую математическую операцию.
-
Если надо ограничить область определения выбранной операции агрегирования, нужно установить некоторый критерий отбора записей.
-
По умолчанию Access в заголовке поля отображает слово Операция – ИмяПоля, где Операция – название выбранной операции, а ИмяПоля – имя данного поля. Если нужно видеть на экране некоторое смысловое название, в ячейку Поле следует ввести следующую конструкцию:
ПсевдонимПоля: ИмяПоля
где ИмяПоля – имя, которое нужно использовать.
-
Запустить запрос на выполнение.
На рис. 16 показан результат выполнения запроса на суммирование полей остатков на складе (НаСкладе) таблицы товаров (Товары). Результирующая таблица содержит всего одну ячейку, в которой отображается результат операции агрегирования.
Рис. 16. Таблица содержит результат вычисления,
примененного к одному полю
Настройка сводного запроса по нескольким полям
Если в результатах сводного запроса нужно ввести большее количество данных, в него можно добавить несколько полей:
-
Добавить все необходимые поля и применить к каждому из них некоторую математическую операцию агрегирования.
-
Добавить копии одного и того же поля в конструктор и применить к каждой из них разные математические операции агрегирования (рис.17).
В сводный запрос можно добавлять только те поля, к которым применяются операции агрегирования; поля, по которым эти операции не применяются, добавлять в запрос нельзя.

Рис. 17. Сводный запрос, использующий пять математических
операций агрегирования над тремя полями
Создание сводного запроса с группировкой записей
В самом простом случае математические операции агрегировании выполняются на основе всех (или отфильтрованных) записей таблицы. Предположим, что вместе с общим результатом необходимо видеть промежуточные итоги (не только общее количество товара на складе, но и количество товаров каждой из категорий).
Группировка записей для создания промежуточных итогов выполняется в два действия:
-
Нужно добавить в сетку конструктора поле, на основе которого будет производиться группировка записей.
-
В строке Групповая операция нужно выбрать значение Группировка.
Группировка по нескольким полям
Методику группировки записей для получения промежуточных итогов можно расширить на случай нескольких полей. Программа Access применяет группировку к полям в последовательности слева направо.
Для примера предположим, что внутри отдельных категорий должны находиться сводные значения для каждого из поставщиков товара. Для этого в конструктор запросов следует добавить таблицу Поставщики, а ее поле Название переместить в ячейку справа от поля названия категории товара (Категория) и выбрать в его строке Групповая операция значение Группировка.
|