Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МА2007лекция3_запросы

.pdf
Скачиваний:
10
Добавлен:
20.03.2015
Размер:
5.05 Mб
Скачать

2. В БД «Каталог» выбрать книги, поступившие в магазин в марте

2010 года.

Для решения этой задачи необходимо модифицировать запрос, созданный при выполнении предыдущего задания: добавить еще одно вычисляемое поле, в которое необходимо ввести формулу, выделяющую номер месяца из даты поступления книг, используя для этого функцию из категории Дата/время. Полученное значение должно равняться 3 (т.к. март – третий месяц в году).

3. В БД «Каталог»для книг поступивших в магазин более двух лет назад определить новую цену, равную 75% от старой.

Для решения этой задачи необходимо вычислить «возраст книги» (от текущего года вычесть год поступления книги в магазин). Если полученное значение «возраста книги» больше 2, то цену книги умножить на 75% (0,75). Т.е. нужно составить формулу и использованием фукции Iff из категории функций «Управление» (аналог функции ЕСЛИ в Excel). Формат этой функции: Iff (условие; значение_если_истина; значение_если_ложь).

В бланке запроса создадим вычисляемое поле, в которое соответствующее выражение.

21

6. Запросы с параметрами

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

Иногда это бывает очень удобно. Например, можно создать запрос, который выдает список книг, стоящих меньше определенного значения. Для этого надо ввести выражение <[Стоимость] в поле Цена строки Условие отбора. При этом важно чтобы поле Стоимость в таблице отсутствовала (есть только поле Цена).

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

22

7.Итоговое запросы

Спомощью запросов можно производить так называемые итоговые вычисления. Итоговые вычисления – это вычисление по всем записям для какого-либо числового поля (может рассчитываться сумма значений или величина среднего значения по всем ячейкам поля, может выбираться максимальное или минимальное значение данных в поле, может так же исполнятся иная итоговая функция).

Например, пусть необходимо определить среднюю цену книги в каждом из жанров (драма, приключения и т.д.).

Запросы, позволяющие вычислять итоговые значения называют итоговыми.

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

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

1. В бланке запроса отобразить (определить) поля, по которым осуществляется группировка данных и поля, для которых проводятся вычисления.

Внашем примере для создания итогового запроса будем использовать таблицу Книги и ее поля – Жанр и Цена. По полю Жанр будет идти группировка, а поле Цена будет использоваться для вычислений.

2. На вкладке Конструктор в группе Показать или скрыть щёлкнуть на кнопке Итоги.

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

3. Для поля, по которому производится группировка записей (в нашем случае – Жанр), оставить в строке Групповые операции значения Группировка. Для остальных полей щёлкнуть в этой строке – появится кнопка раскрывающего списка, из которого выбрать итоговую функцию для расчёта значений в данном поле.

Итоговые функции:

Sum– вычисление суммы значений полей в группе

Avg – вычисление среднего арифметического полей группы Min – поиск наименьшего значения в группе

Max – поиск наибольшего значения в группе

Count – определение числа совпадающих значений в группе StDev – вычисление среднеквадратичного отклонения от среднего

значения поля

Var – вычисление дисперсии значений поля

First – показ первой совпадающей записи в группе Last – показ последней совпадающей записи в группе

23

Для поля Цена выберим итоговую функцию Avg.

7.Закрытье бланк запроса и задайть ему имя.

8.Запустить запрос и убедится, что он правильно работает.

8. Перекрестные запросы

Все рассмотренные выше запросы относятся к категории запросов па выборку.

Познакомимся с перекрестными запросами.

Иногда информация в базе данных систематизируется по двум различным признакам. Предположим, в нашем распоряжении имеется таблица «Группа», содержащая данные о возрасте, половой принадлежности и оценках учащихся.

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

1.Откройте диалоговое окно Новый запрос, выберите вариант Перекрестный запрос и нажмите кнопку ОК.

2.В первом окне мастера выберите таблицу или запрос, поля которых нужно использовать (например, таблица Группа). Нажмите кнопку Далее.

24

3. Во втором окне мастера нужно выбрать от одного до трех полей, значения которых будут использоваться в качестве заголовков строк. В нашем примере достаточно выделить только поле Возраст (Age).

4. В следующем окне мастера нужно выбрать поле, значение которого будет использоваться в качестве заголовка столбца. Выделите поле Пол.

25

5. В четвертом окне мастера выделите поле и функцию, которая будет применяться к значению этого поля. Например, в данном случае нужно выбрать поле Оценки и функцию Среднее (Avg), так как будет вычисляться средняя оценка по каждой группе учеников. Чтобы запрос содержал дополнительный столбец с суммой значений каждой из строк, установите флажок Вычислить значение каждой строки. Если это сделать, в нашем примерном запросе появится дополнительный столбец, в котором будут показаны средние значения оценок для мальчиков и девочек каждого возраста.

6. В последнем окне диалога укажите имя запроса и выберите, нужно ли его открыть в виде таблицы или в режиме конструктора. После нажатия кнопки Готово запрос будет создан.

26

Существует возможность сделать перекрестным любой существующий запрос. Для этого откройте его в режиме конструктора и щелкните по кнопке Перекрестный в группе Тип запроса вкладки Конструктор. В результате в бланк запроса будут добавлены две строки: Групповая операция и Перекрестная таблица. Используя раскрывающиеся списки в полях строки Перекрестная таблица, укажите, какое из полей запроса будет служить в качестве Заголовка строк, какое — в качестве Заголовка столбцов, а какое — показывать Значение каждой ячейки, находящейся на пересечении указанных строк и столбцов. В строке Групповая операция для поля Заголовки строк выберите значение Группировка, а для поля Значение – функцию (Sum, Avg

и т.д.).

27