Итоговые запросы
Для получения итоговых значений по группам данных используются итоговые запросы. Для задания вычислений итоговых значений откройте запрос в режиме конструктора, щелкните на кнопке Итоги в группе Показать или скрыть на вкладке Работа с запросами, чтобы в бланке запроса появилась строка "Групповая операция". Тогда записи по каждому полю будут группироваться. Для вычисления итогов замените значение Группировки в строке "Групповая операция" на конкретную итоговую функцию.
MS Access предоставляет девять функций, обеспечивающих выполнение групповых операций (табл. 10.4).
Например, необходимо вычислить, сколько всего было продано данного товара с данного склада за все время продаж.
Таблица 10.4
Функции для групповых операций
Функция |
Описание |
Sum |
Суммирование значений определенного поля |
Avg |
Вычисление среднего значения данных определенного поля |
Min |
Вычисление минимального значения поля |
Max |
Вычисление максимального значения поля |
Count |
Вычисление количества записей, отобранных запросом по условию |
First |
Определяется первое значение в указанном ноле записей, отобранных запросом |
Last |
Определяется последнее значение в указанном поле записей, отобранных запросом |
StDev |
Вычисляется стандартное отклонение значений данного поля для всех записей, отобранных запросом |
Var |
Вычисляется вариация значений данного поля для всех записей, отобранных запросом |
Так как один и тот же товар мог продаваться не один раз, используем группировку по полям [Наименование] и [НомерСклада], а по полю [Количество] выбираем функцию суммирования (рис. 10.40).
Рис. 10.40. Итоговый запрос
Модификация данных с помощью запросов
Чтобы обезопасить себя от случайностей, перед созданием запросов на модификацию данных создайте резервные копии таблиц, данные которых будут модифицироваться.
Запрос на создание таблицы. БД на физическом уровне хранит только таблицы. Набор записей запросов физически не существует в БД. MS Access создаст его из данных таблиц только во время выполнения запроса. Иногда возникает необходимость сохранить извлекаемые с помощью запроса на выборку данные в новой таблице. Для этого:
• создайте новый запрос на выборку тех записей, из которых должна состоять создаваемая с помощью запроса таблица;
• проверьте правильность отбора записей, перейдя в режим таблицы;
• преобразуйте запрос на выборку в запрос на создание таблицы. Для этого, вернувшись в режим конструктора, выберите кнопку Создание таблицы в группе Тип запроса на вкладке Работа с запросами (рис. 10.41);
• в появившемся окне введите имя новой таблицы;
• выполните запрос (кнопка ).
Рис. 10.41. Кнопка Создание таблицы
Запрос на обновление. Используя этот тип запроса, можно изменить в базовой таблице группу блоков данных, отобранную па основе определенных критериев:
• создайте новый запрос на выборку и проверьте его корректность, перейдя в режим таблицы;
• преобразуйте запрос на выборку в запрос на обновление; для этого, вернувшись в режим конструктора, выберите команду Обновление (вкладка Тип запроса);
• в появившейся в бланке запроса строке "Обновление" в соответствующих столбцах задайте новые значения полей таблицы. В качестве таковых могут выступать и вычисляемые значения; в случае необходимости воспользуйтесь инструментом "Построитель выражений";
• выполните запрос.
Запрос на добавление записей. С помощью этого типа запроса блоки данных одной таблицы (все или отобранные запросом) можно присоединить в конец другой таблицы:
• создайте новый запрос на выборку тех блоков данных, которые будут добавлены в некоторую таблицу, и проверьте его корректность, перейдя в режим таблицы;.
• преобразуйте запрос на выборку в запрос на добавление; для этого, вернувшись в режим конструктора, выберите команду Добавление... (вкладка Тип запроса);
• в появившемся окне введите имя таблицы, к которой нужно присоединить данные, и нажмите кнопку ОК;
• выполните запрос.
Запрос на удаление записей. С помощью данного типа запроса можно удалить из базовой таблицы группу блоков данных, отобранных по определенным критериям. При этом следует тщательно проанализировать критерии отбора, поскольку эту операцию нельзя отменить. Для осуществления запроса требуются следующие действия:
• создайте новый запрос на выборку удаляемых блоков данных; отбор блоков данных выполняется в соответствии с заданными в строке "Условие" критериями;
• проверьте корректность сформулированных условий, перейдя в режим таблицы;
• преобразуйте запрос на выборку в запрос на удаление записей; для этого, вернувшись в режим конструктора, выберите команду Удалить (вкладка Тип запроса);
• в появившейся строке "Удалить" установите критерии отбора;
• выполните запрос.
Рассмотрим создание запросов на модификацию на примере.
Пример 10.3. Создадим запрос на создание таблицы [Мониторы], полученной из таблицы [Товары]. Таблица [Мониторы] должна содержать все поля таблицы [Товары] и только те записи, в которых наименование товара – Монитор.
Решение
1. Создадим запрос на выборку данных о мониторах из таблицы [Товары] (рис. 10.42), предварительно создав копию таблицы [Товары].
Рис. 10.42. Запрос на выборку данных о мониторах
Для выбора всех полей таблицы [Товары] (рис. 10.43) использована "*". Условие отбора задано для поля [Наименование]. С цслыо избежать дублирования поля | Наименование! в таблице [Мониторы] отсутствует "галочка" в строке Вывод на экран.
Рис. 10.43. Запрос на создание таблицы
2. Изменим тип запроса на выборку в запрос на создание таблицы, при этом появится окно для ввода имени создаваемой таблицы (см. рис. 10.44).
3. Выполним запрос, при этом появится предупредительное окно (см. рис. 10.44).
4. Подтвердим создание новой таблицы с выбранными записями, в результате в списке таблиц БД увидим новую таблицу [Мониторы] (рис. 10.45).
Рис. 10.44. Окно подтверждения создания таблицы
Рис. 10.45. Появление новой таблицы в списке таблиц
Пример 10.4. Создадим запрос на обновление цен товаров с учетом сезонных скидок на 10%.
Решение
1. Предварительно создадим копию таблицы [Товары], присвоив ей имя [Копия Товары].
2. Создадим запрос на выборку (рис. 10.46), отображающий поле [Цена] (выбираем только то поле, значения которого должны быть обновлены).
3. Изменим тип запроса на выборку в запрос на обновление.
4. В строке Обновление введем выражение, обновляющее значение поля, с помощью Построителя выражений.
5. Выполним запрос.
Рис. 10.40. Запрос на обновление