12.8. Работа с данными при помощи запросов
12.8. Работа с данными при помощи запросов
В режиме таблицы доступны самые разные операции с данными – просмотр, сортировка, фильтрация, обновление и печать. Однако очень часто приходится проводить вычисления или просматривать данные из нескольких таблиц. Отобрать нужные данные можно с помощью запросов.
После выполнения запроса на выборку (который отбирает информацию из таблиц и других запросов базы данных, в то время как при выполнении запросов на изменение данные вставляются, обновляются или удаляются) Access создает набор записей, содержащий отобранные данные. Однако в отличие от реальной таблицы, этот набор записей физически не существует в базе данных. Access создает набор записей из данных таблицы только во время выполнения запроса.
Выбор данных из одной таблицы
Одним из преимуществ запросов является то, что они позволяют достаточно быстро отобрать необходимые данные из нескольких связанных таблиц. Но запросы полезны и при работе с одной таблицей. Все приемы, используемые при работе с единственной таблицей, годятся и для сложных многотабличных запросов, поэтому мы начнем с запросов на выборку данных одной таблицы.
На рис. 12.8 показан запрос в режиме конструктора. Окно конструктора запросов разделено на две части. В верхней находятся списки полей таблиц или запросов, на основе которых создается новый запрос. В нижней располагается бланк QBE (Query By Example – запрос по образцу), в котором выполняется вся работа по созданию запроса. Каждый столбец бланка представляет одно поле, используемое в запросе. Поле может просто принадлежать одной из таблиц, быть вычисляемым (иными словами, его значение рассчитывается на основе одного или нескольких полей таблицы) или итоговым, то есть использующим одну из встроенных функций Microsoft Access.
Рисунок 12.8. Запрос в режиме Конструктор
Первая строка бланка запроса служит для выбора полей, которые должны присутствовать в наборе записей, используется для сортировки данных или для выбора информации из таблицы. Полям запроса можно присвоить имена, которые будут отображаться в заголовках столбцов при выводе набора записей запроса, а для генерации вычисляемых полей можно использовать выражения любой степени сложности.
Если была выполнена команда Вид->Имена таблиц, во второй строке бланка запроса Access выведет имя таблицы, из которой выбрано поле. В третьей строке бланка можно задать сортировку по возрастанию или по убыванию.
Флажки в строке бланка Вывод на экран отвечают за вывод полей в наборе записей. По умолчанию выводятся все поля, включенные в бланк Запроса.
Для ввода условия отбора записей используется строка Условие отбора и строки или. На рис. 12.5 показан запрос на выборку фамилий тех студентов, которые имеют оценки от 4 до 5 баллов.
Включение полей в запрос
Первым шагом при создании запроса является выбор полей, включаемых в набор записей. Можно просто перетащить поле с помощью мыши в нужный столбец бланка из списка полей верхней части окна. При перетаскивании поля указатель мыши превращается в маленький прямоугольник.
Вычисляемые поля
С любыми полями таблицы можно выполнять вычисления и сделать вычисляемое выражение новым полем в наборе записей, при этом можно использовать любые из встроенных функций Access. Кроме того, поля запроса могут содержать данные, получаемые с помощью арифметических операций над полями таблицы. Например ЦенаТовара*Количество.
Вычисляемое поле может содержать вызовы встроенных функций Access и следующие операторы:
"+" – складывает два арифметических выражения;
"– " – вычитает из первого арифметического выражения второе;
"*" – перемножает два арифметических выражения;
"/" – делит первое арифметическое выражение на второе;
"" – округляет два арифметических выражения до целых значений и делит первое на второе, результат округляется до целого;
"^" – возводит первое арифметическое выражение в степень, задаваемую вторым арифметическим выражением;
«MOD» – округляет оба арифметических выражения до целых значений, делит первое на второе и возвращает остаток;
«&» – создает текстовую строку как результат присоединения второй строки к концу первой. Если один из операндов является числом, то оно автоматически преобразуется в строку символов.
На рис. 12.9 показан пример вычисляемого поля для таблицы тАттестат. Вычисляемое поле Среднее выводит средний балл по трем предметам: Русский, Математика, Физика.
Рисунок 12.9. Вычисляемое поле
Итоговые запросы
Для вычисления итоговых значений надо нажать кнопку Групповые операции
чтобы в бланке QBE появилась строка Групповые операции.
Access предоставляет девять функций, обеспечивающих выполнение групповых операций. Вы можете задать нужную вам функцию, введя ее имя с клавиатуры в строке Групповая операция бланка запроса или выбрав ее в раскрывающемся списке.
Итоговые функции Access:
Sum – вычисляет сумму всех значений заданного поля в каждой группе.
Avg – вычисляет среднее арифметическое всех значений данного поля в каждой группе.
Min – возвращает наименьшее значение, найденное в этом поле внутри каждой группы.
Max – возвращает наибольшее значение, найденное в этом поле внутри каждой группы.
Count – возвращает число записей, в которых значения данного поля отличны от Null.
StDev – стандартное отклонение всех значений данного поля в каждой группе.
Var – вычисляет дисперсию значений данного поля в каждой группе.
First – возвращает первое значение этого поля в группе.
Last – возвращает последнее значение этого поля в группе.
На рис. 12.10 показан пример запроса с применением групповой операции Sum. Данный запрос является многотабличным и позволяет определить сумму выплат, сделанных каждым абитуриентом.
Рисунок 12.10. Окно запроса с применением групповой операции
Перекрестные запросы
Access поддерживает особый тип итоговых запросов, называемый перекрестными запросами. Они позволяют увидеть вычисляемые значения в виде перекрестной таблицы, напоминающей электронную (рис. 12.11).
Для построения перекрестного запроса выделите имя нужной таблицы в окне базе данных и выберите Новый запрос в раскрывающемся списке кнопки Новый объект
на панели инструментов. В окне диалога Новый запрос выберите Конструктор, а затем в окне конструктора выберите команду Запрос->Перекрестный. Access добавит в бланк запроса строку Перекрестная таблица. В этой строке для каждого поля перекрестного Запроса может быть выбрана одна из четырех установок: Заголовки строк, Заголовки столбцов, Значение (выводимое в ячейках перекрестной таблицы) и Не отображается. Для перекрестного запроса надо определить, по крайней мере, одно поле в качестве заголовков строк, одно для заголовков столбцов и одно поле значений. Каждое поле, являющееся заголовком столбцов, должно иметь в строке Групповая операция установку Группировка. Для поля, использующегося в качестве заголовков строк, в строке Групповая операция должна быть установлена операция Группировка, выбрана одна из итоговых функций (Count, Min, и т. д.) или введено выражение, содержащее итоговую функцию. Для поля с установкой Значение выбирается одна из итоговых функций или вводится выражение, использующее итоговую функцию.
Построить перекрестный запрос можно другим, более простым способом, с помощью мастера. Для этого в окне диалога Новый запрос надо выделить пункт Перекрестный запрос и нажать Ok. Затем мастер выведет на экран последовательно ряд окон, в которых запросит необходимые данные для построения перекрестного запроса. Пример результата выполнения перекрестного запроса показан на рис. 12.11.
Рисунок 12.11. Результаты перекрестного запроса
Данный текст является ознакомительным фрагментом.