- •Создание запросов в субд Access 2002
- •Текст печатается в авторской редакции Создание запросов в среде Access
- •1. Цель работы
- •2. Окно конструктора запросов
- •3. Построение условий для выбора записей
- •4. Упорядочение данных и группировка полей запроса
- •5. Общие сведения о команде select
- •6. Интерактивные и перекрестные запросы
- •7. Запросы на изменение
- •7.1. Виды запросов на изменение. Их использование
- •7.2. Запрос на создание таблицы
- •7.3. Запрос на обновление
- •7.4. Запрос на добавление записей
- •7.5. Запрос на удаление записей
- •8. Порядок выполнения работы
- •9. Контрольные вопросы и задания
3. Построение условий для выбора записей
Для задания критериев выбора записей следует выбрать строку Условие отбора бланка запроса и ввести в нужный столбец выражение для отбора записей. При вводе выражения можно использовать построитель выражений (выбор строки Построить из контекстного меню). При построении выражений используются математические, логические, строковые (Like, & - конкатенация) операторы, операторы сравнения, а также вспомогательные операторы Between…And; In; Is Null/Not Null. На рисунке 5 представлен результат выборки данных с заданными критериями отбора данных в строке Условия отбора окна конструктора.
Заметим, что при составлении выражений для фильтров удобно пользоваться оператором In для задания списка возможных значений. Например, для выбора покупок клиентов с номерами 1,3,6 и объемом сделок не менее 10 единиц товара получим запрос, представленный на рисунке 6.
Рис. 5. Результат выбора по заданному условию
Рис. 6. Запрос с условиями отбора в нескольких полях
Более сложные варианты отбора представляются с помощью соединителя Or в одной или нескольких строках. На рисунке 7 представлены бланк и результаты запроса с более сложными условиями выбора записей.
Рис. 7. Пример задания условий отбора для символьных полей и дат
4. Упорядочение данных и группировка полей запроса
Строка Сортировка бланка запроса управляет порядком расположения записей в результирующей таблице. Для каждого выбранного поля можно установить с помощью переключателя критерий упорядочения по возрастанию (Ascending) или по убыванию (Descending).
При упорядочении по нескольким полям для каждого из полей критерий упорядочения устанавливается отдельно. При этом порядок сортировки записей результирующей таблицы определяется порядком следования полей в списке.
Группировка позволяет получить вычисляемую информацию о подгруппах записей таблицы. Чтобы сгруппировать записи в запросе по каким либо полям таблицы и выполнить групповые вычисления необходимо активизировать строку Групповая операция (Total). Для этого необходимо выполнить одно из двух действий:
выбрать в режиме конструктора запросов команду основного меню Вид Групповая операция;
щелкнуть на кнопке Групповые операции (Totals) (с пиктограммой греческой буквы ) на панели инструменотов Конструктора.
В результате в бланке запроса между строками Имя таблицы и Сортировка появляется строка Групповая операция, позволяющая реализовать четыре категории групповых операций:
Группировка – группирование записей для статистических вычислений.
Статистические функции – математичекие операции или операции выбора над данными группы.
Выражение – групповые вычисления на базе вычисляемого поля.
Условие – условия отбора записей для групповых вычислений.
Все перечисленные категории групповых опрераций кроме статистических функций состоят их одной опции. Для статистичесикх функций подсчет итоговых значений выполняется для одной из девяти функций:
Count – количество непустых значений поля в группе строк итоговой таблицы;
Max – наибольшее значение в поле;
Min – наименьшее значение в поле;
Avg – среднее значение в поле;
Sum – сумма значений в поле;
StDev - стандартное отклонение значений в поле;
Var - дисперсия распределений значений в поле;
First - значение поля в первой записи таблицы или запроса;
Last - значение поля в последней записи таблицы или запроса.
Строки таблицы можно группировать по любой комбинации ее полей. Каждое из уникальных значений поля, по которому выполняется группировка, порождает отдельную группу данных.
Рассмотрим примеры запросов, выпоняющих вычисления итогов по всем записям таблицы, а также для одной и нескольких групп записей.
Запрос 1. Определить общее число сделок, суммарный объем сделок (суммарное количество единиц товаров) и максимальную стоимость одной сделки.
По результатам выполнения запроса (рис. 8) можно видеть, что она представлена только одной записью, т.к. итоговые вычисления проводятся над всеми записями таблиц.
Рис. 8. Пример выполнения Запроса 1
Запрос 2. Для каждого наименования товара определить количество сделок, а также суммарную стоимость покупок и общее количество единиц купленного товара.
На рисунке 9 приведены бланк Запроса 2 и результаты его выполнения. В данном запросе выражение вычисляет итоговую сумму покупок для каждого вида товаров в отдельности. В Запросе 1 с помрощью выражения определялась максимальная стоимость одной сделки среди всех сделок по всем видам товаров.
Рис. 9. Пример выполнения Запроса 2
Запрос 3. Для каждого клиента определить число сделок и стоимость покупок отдельных видов товаров.
Результат выборки (рис. 10) содержит несколько записей для одного клиента по количеству наименований купленных товаров. Для каждого из наименований определены число сделок и их суммарная стоимость.
Рис. 10. Пример выполнения Запроса 3
Access позволяет ограничивать область действия группового запроса за счет совместного использования группировки и критериев ограничения выбора записей. Условия отбора записей применяют к полям группировки, итоговым и неитоговым полям. Ниже представлены примеры реализаций запросов с различными критериями отбора записей.
Запрос 4. Для каждого наименования товара, кроме товара «сахар», определить суммарную стоимость покупок.
Запрос 5. Для каждого наименования товара определить суммарную стоимость покупок, если она не превышает значения 3000 у.е .
Запрос 6. Для каждого наименования товара определить число сделок, выполненных позднее 01.02.2002.
В Запросе 4 подсчет итогов производится только для тех записей, для которых выполняется критерий выбора (рис. 11). В Запросе 5 итоги подводятся для всех записей и критерий отбора распространятся только на результат отображения результатов запроса: выводятся только те записи, для которых критерий выполняется (рис. 12).
Рис. 11. Пример выполнения Запроса 4
Рис. 12. Пример выполнения Запроса 5
Запрос 6 содержит критерий отбора в неитоговом поле (дата сделки), которое не отображено в результирующей выборке (рис.13). В данном случае критерий ограничил диапазон записей исходных таблиц, по которым проводились итоговые статистические вычисления.
Рис. 13. Пример выполнения Запроса 6