- •Романов в.В.
- •1.2. Типы моделей данных
- •1.3.2. Формализация отношений
- •2.2. Логические связи в рбд
- •4. Работа с данными при помощи запросов
- •4.1. Средства описания запросов
- •4.2 Условия отбора данных
- •А) бланк запроса;
- •4.4. Итоговые запросы
- •А) бланк запроса (вариант 1)
- •Б) бланк запроса (вариант 2)
- •А) схема связей
- •Б) таблица запроса
- •4.6. Запрос с параметром
- •5. Основные этапы разработки рбд
- •6.4. Анализ данных. Определение структуры данных.
- •6.5. Схема базы данных
- •Р ис. 20. Схема базы данных "Транс-2000" (жирным шрифтом выделены первичные ключи)
- •6.6.2. "Расчет затрат на горючее за отчетный период".
- •Содержание
4.4. Итоговые запросы
Итоговые запросы выполняются тогда, когда пользователя интересует не каждая отдельная запись в БД, а итоговые значения по группам данных. В этом случае в бланке запроса указывается поле (или поля) по которым выбираемые данные должны объединяться в группы и поля, в которых необходимо выполнить групповую функцию. Признак группировки и групповая функция указываются в строке "Групповые операции" бланка QBE (который переводится в режим итогового запроса щелчком по кнопке ). Групповые функции могут применяться и для вычисляемых полей.
Рассмотрим пример (рис. 10). Цель запроса - подсчитать объемы работ выполненные каждым водителем отдельно за весь период ведения БД (рис. 3). Т.е., необходимо выбрать все рейсы каждого водителя, найти объемы работы в тоннокилометрах по каждому рейсу и просуммировать их. Поэтому в бланке запроса (рис. 10) для поля "Фамилия_И_О" указан признак "Группировка", а для поля "Итого_объем" указана групповая функция суммирования данных по сгруппированным записям. В результате (в таблице запроса) для каждого водителя выведена только одна строка с суммарным объемом выполненных работ.
Итого объем: итоговый запрос |
|
|
Поле: |
Фамилия_И_О |
Итого_объем:[Вес]*[Расстояние] |
Имя таблицы: |
ВОДИТЕЛИ |
|
Групповая операция: |
Группировка |
Sum |
Сортировка: |
|
|
Вывод на экран: |
|
|
Условия отбора: |
|
|
Или: |
|
|
а) бланк запроса
-
Итого объем: итоговый запрос
Фамилия_И_О
Итого_объем
Ермаков Ф.Г.
464,1
Локтев И.Д.
1066,8
Антонов Р.Т.
36
Иванов С.П.
1646,9
б) результат выполнения итогового запроса
Рис. 10. Бланк и таблица запроса "Итого объем "
Если признак группировки указан более чем в одном поле итогового запроса, то приоритет группировок устанавливается слева направо. В результате группировки по первому (левому) признаку образуются группы записей (например, все рейсы Иванова, все рейсы Ермакова и т.д.), затем внутри образованных групп выполняется группировка по второму признаку (например, для группы записей относящихся к одному водителю м.б. сформированы подгруппы по маркам автомобилей на которых он выполнял рейсы) и т.д. Т.о., можно выполнять многоступенчатую группировку записей с подсчетом групповых функций.
В MS Access в список групповых функций входят следующие:
Avg - вычисляет среднее арифметическое всех значений заданного поля в каждой группе записей (только для типов данных - числовой, денежный);
Count - возвращает число записей, в которых значение заданного поля отличны от Null;
First - возвращает первое значение этого поля в группе;
Last - возвращает последнее значение этого поля в группе;
Max - возвращает наибольшее значение, найденное в этом поле
внутри каждой группы;
Min - возвращает наименьшее значение, найденное в этом поле
внутри каждой группы;
StDev - подсчитывает статистическое стандартное отклонение
для всех значений данного поля в каждой группе;
Sum - вычисляет сумму всех значений заданного поля в каждой
группе (только для типов данных - числовой, денежный);
Var - подсчитывает статистическую дисперсию для всех значе-
ний данного поля в каждой группе.
4.5. Влияние характера межобъектных связей
на результат запроса
При проектировании запросов необходимо учитывать, что включение в схему запроса атрибутов из таблиц (или других запросов) не связанных между собой приводит к формированию набора строк образованных комбинированием каждой строки одной таблицы с каждой строкой другой таблицы.
Пример. Цель запроса: вывести список содержащий сведения о сформировавшемся закреплении автотранспорта за водителями. Рассмотрим два варианта. В первом в схему запроса включаются атрибуты только из двух таблиц, не имеющих прямой связи, “ВОДИТЕЛИ” и “АВТОТРАНСПОРТ” (рис. 3). Во втором к указанным источникам данных добавляется атрибут из таблицы “ПЕРЕВОЗКИ”, и все три источника данных становятся связанными. В обоих вариантах используется итоговая форма запроса. Бланки запросов и результаты их выполнения приведены на рис. 11. Как видно из результатов выполнения запросов, в первом случае сформирован список из 20 строк, содержащий все возможные комбинации пар “водитель-автомашина”. Реально же, после выполнения семи рейсов было зарегистрировано только шесть сочетаний “водитель-автомашина” (вариант 2).
При использовании несвязанных объектов в качестве источников данных для запросов, в СУБД MS Access между объектами может устанавливаться временная связь. Эта связь объявляется в окне запроса с одним из трех типов объединения двух таблиц.
Первый – объединение только тех записей, в которых связанные поля обеих таблиц совпадают. Второй – объединение ВСЕХ записей из первой таблицы и только тех записей из второй, в которых связан-
Закрепление_1: запрос на выборку |
||
Поле: |
Фамилия_И_О |
Госномер |
Имя таблицы: |
ВОДИТЕЛИ |
АВТОТРАНСПОРТ |
Групповая операция: |
Группировка |
Группировка |
Сортировка: |
по возрастанию |
|
Вывод на экран: |
|
|
Условие отбора: |
|
|
или: |
|
|
