Использование запросов
Ранее отмечалось, что для работы с данными, отобранными в соответствии с каким-либо условием, может быть использована возможность установить фильтр для таблицы базы данных или формы (Главная, Фильтр). В том же пункте есть раздел Расширенный фильтр (Дополнительно, Расширенный фильтр), который открывает окно Конструктора запросов. Кроме того, Конструктор запросов фактически уже использовался при описании источника записей для отчета (см. рис. 24).
Для работы с запросами и для их сохранения в базе в системе Access присутствует специальный раздел, который позволяет создавать новые запросы в режиме конструктора или с помощью Мастера.
Запросы в Microsoft Access бывают нескольких видов:
Запрос для отбора данных по заданным сложным условиям из одной или нескольких таблиц баз данных, с группировкой данных для расчета итогов, с показом результатов выполнения запроса в виде таблицы, либо с использованием его для форм и отчетов; после редактирования данных в таблице запроса данные таблиц базы могут обновляться.
Перекрестный запрос с формированием двухмерной итоговой таблицы, с группировкой по двум выражениям, одно из которых становится заголовком строки, другое - заголовком столбца.
Запрос на создание новой таблицы.
Запросы на изменение данных (обновление данных, добавление данных, удаление данных)
Принцип формирования запросов наиболее легко освоить при использовании Мастера запросов. Предположим, нам нужно отобрать тех студентов, которые по предмету Математика имеют только отличные оценки по результатам первого семестра. Для создания запроса выбираем во кладке Создание базы режим Мастер запросов.
На первом шаге следует выбрать таблицы и поля, которые нужно включить в запрос. Выбор полей может быть выполнен из нескольких таблиц базы. Для нашего примера выбираем из таблицы SPISOK поля NZ, FIO, KURS, N_GRUP; из таблицы OCENKI – SEMESTR и BALL; из таблицы PREDM – NAME_P (рис. 33).
Рис.
33 - Выбор
полей в Мастере запросов
На шаге 2 ("подробный или итоговый отчет") выбираем подробный отчет. На последнем шаге задаем название запроса Математика и выберем вариант Изменить макет запроса, после чего нажимаем кнопку Готово. Запрос открывается в конструкторе запросов, его вид показан на рис. 34.
Рис.
34 - Конструктор
запросов
В верхней части Конструктора запросов показаны таблицы, используемые для отбора данных и связи между ними, в нижней части - таблица для выбора полей, группировки данных (если строки "Групповые операции" нет, нужно нажать на кнопку Итоги вкладки Конструктор), задания сортировки и условий отбора.
Модифицируем запрос для задания условия отбора данных и упорядочения студентов по их фамилии. Для этого в колонке поля FIO зададим сортировку по возрастанию, для поля SEMESTR зададим условие отбора 1 (первый семестр), для поля BALL зададим условие 5 и для поля NAME_P зададим условие "математика". Если в условии отбора написать текст в квадратных скобках, при выполнении запроса появится окно для ввода этого параметра. Например, если для поля PREDMET в условии написать [Задайте предмет], можно будет использовать один и тот же запрос для отбора данных по разным предметам.
Можно также убрать галочки у тех полей, которые вы не хотите показывать на экране.
Сохраним запрос и посмотрим его текст в режиме SQL (Structured Query Language). Текст запроса будет выглядеть следующим образом:
SELECT SPISOK.NZ, SPISOK.FIO, SPISOK.KURS, SPISOK.N_GRUP, OCENKI.SEMESTR, OCENKI.BALL, PREDMETS.NAME_P
FROM SPISOK INNER JOIN (PREDMETS INNER JOIN OCENKI ON PREDMETS.[N_PREDM] = OCENKI.[N_PREDM]) ON SPISOK.[NZ] = OCENKI.[NZ]
WHERE (((OCENKI.SEMESTR)=1) AND ((OCENKI.BALL)=5) AND ((PREDMETS.NAME_P)="математика"))
ORDER BY SPISOK.FIO;
Закроем окно конструктора и выполним запрос командой Открыть или двойным щелчком мышью. Результат отбора данных будет показан на экране в виде таблицы (рис. 35). Следует помнить, что редактирование данных этой таблицы приведет к изменению информации в таблицах базы данных!
Рис.
35 - Результаты
выполнения запроса
Результаты выполнения запроса или данные таблиц можно представить в виде диаграмм и графиков. Создадим запрос, в котором покажем в графическом виде средний балл по студенческим группам (используем поле N_GRUP из таблицы SPISOK и поле BALL из таблицы OCENKI). Для группировки данных, как отмечалось выше, во вкладке Конструктор нажимаем кнопку Итоги.
Получим следующий текст запроса:
SELECT SPISOK.N_GRUP, Avg(OCENKI.BALL) AS [Avg-BALL]
FROM SPISOK INNER JOIN OCENKI ON SPISOK.[NZ] = OCENKI.[NZ]
GROUP BY SPISOK.N_GRUP;
Для представления данных в виде графика нажимаем правой кнопкой мыши на заголовке с названием запроса и выбираем Сводная диаграмма, после чего открывается окно Построителя диаграмм. Методы оформления диаграмм аналогичны использованию объекта Диаграмма Microsoft Graph в программах Microsoft Word или Excel. На рис. 36. показана диаграмма для приведенного выше запроса.
Рис.
36 - Результаты
выполнения запроса с группировкой
данных, представленные в виде диаграммы
На рис. 37 приведена трехмерная диаграмма для запроса следующего вида:
SELECT DISTINCTROW FCLT.NAME_F, PREDMETS.NAME_P, Avg(OCENKI.BALL) AS [Avg-BALL]
FROM PREDMETS INNER JOIN ((Spisok INNER JOIN OCENKI ON Spisok.NZ = OCENKI.NZ) INNER
JOIN FCLT ON Spisok.N_FCLT = FCLT.N_FCLT) ON PREDMETS.N_PREDM = OCENKI.N_PREDM
GROUP BY FCLT.NAME_F, PREDMETS.NAME_P;
Рис.
37
- Результаты
выполнения запроса с группировкой
данных, представленные в виде трехмерной
диаграммы
С использованием запросов других видов одной командой можно изменять (команда SQL UPDATE) либо удалять (команда SQL DELETE) данные множества записей таблицы, отобранных по какому-либо условию, а также добавлять записи из других таблиц (команда SQL INSERT).
