
- •Уральский институт-филиал Российской академии народного хозяйства и государственной службы при Президенте Российской Федерации.
- •Приложение 1 Описание используемых учебных баз данных.
- •Свойства полей таблицы
- •Немного о ключевых полях
- •Запросы к базе данных
- •Создание простого запроса
- •1.4.2. Запрос с условием
- •Сортировка в запросе
- •1.4.4. Вычисления в запросах
- •1.4.5. Запрос с параметром
- •1.4.6. Групповые операции в запросах
- •Приложение 2
- •Тема 4. Справочно-правовые системы
- •1. Инкорпорация – это:
- •2. Что такое кодификация?
- •Приложение 3 Задачи
- •Перечень вопросов для подготовки к экзамену
- •Литература
1.4.5. Запрос с параметром
Возможности запроса MS Access существенно расширяет инструмент запрос с параметром. Пользователь вводит произвольное значение поля для отбора записей. Для этого в поле Условие отбора следует записать:
[Введите значение]
Выполнение запроса начинается с появления диалогового окна, представленного на Рис. П1.4.8.
Рис. П1.4.8. Выполнение запроса с параметром.
Таким образом, с помощью одного запроса, можно получить данные по всем метеостанциям, если использовать запрос с параметром.
Запрос 1.4.5.
Получить список по любой метеостанции средних температур за месяц в интервале 10—15° С. Упростите работу по вводу критериев отбора записей, введя с клавиатуры всего две – три первых буквы названия станции.
В поле Условие отбора запишем следующее выражение:
Like [??] & “*”
Можно было вписать символ “*” прямо в квадратные скобки. [??*]
Рис.П1.4.9. Запрос с параметром 1.4.5.
Самостоятельно:
Создайте запрос, который отбирает записи из БД Сhronicles.mdb так, чтобы отображались годы и описания, в которое произошло явление, переданное в запросе в качестве параметра. При необходимости просмотрите таблицу явлений, чтобы вводить названия явлений правильно. Организуйте ввод название явления не до конца.
Составьте ещё один запрос, который отбирает из БД Сhronicles.mdb записи, так, чтобы отображались годы и описания явлений , сгруппированных и отсортированных по регионам. Явление так же передается в запросе в качестве параметра.
1.4.6. Групповые операции в запросах
Групповые операции используются в запросах, как правило, для статистических оценок. Для подсчета записей по определенному реквизиту требуется сгруппировать записи. В окне Конструктора запросов следует щелкнуть на кнопке с изображением знака суммы и в столбце появится строка Групповая операция. Вызов Групповой операции можно сделать по контекстному меню. Для каждого столбца можно выбрать либо группировку, либо одну из следующих операций: Sum (Сумма), Avg (Среднее), Min (Минимум), Max (Максимум), Count (Количество записей), Stdev (Стандартное отклонение), Var (Дисперсия).
Запрос 1.4.6.
Для БД Сhronicles.mdb подсчитать количество аномальных явлений по регионам. На Рис. П1.4.10. показан данный запрос. Для выполнения запроса, тип поля (description) MEMO заменить на- текстовое.
Рис.П1.4.10. Подсчет количества записей по регионам.
Этот запрос можно упростить. На самом деле количество описаний для каждого региона содержится в таблице data_region. Таким образом , не привлекая таблицу Data, можно сгруппировать записи по регионам и подсчитать их количество в каждой группе по строке id_data. Выполните запрос вторым способом и сравните результат с предыдущим запросом. Отметим, что в подсчете числа записей не должны участвовать записи с незаполненными полями, поэтому в Условии отбора следует написать: Is not Null.
Групповые операции, в частности, можно использовать для подсчета повторяющихся значений в каких–либо полях, например, чтобы исключить ненужные повторы с операцией Count, достаточно ввести условие отбора >1.
Самостоятельно:
Составьте запрос по БД Temperature.mdb в котором выводятся данные по средней температуре по годам для каждой метеостанции. Установите фиксированный формат поля и число десятичных знаков, равное двум.
Составьте запрос по БД : Студент_заочн_2001.mdb, который подсчитывает количество студентов на каждой специальности и средний балл по специальности. Формат поля среднего балла с двумя десятичными знаками.
Запрос 1.4.7. Перекрёстные запросы
Использование мастера запросов
Продолжение идеи группировки можно продолжить в перекрестных запросах, которые группирую данные как по строкам, так и столбцам таблицы, либо запроса. Для построения перекрестного запроса следует запустить кнопку Перекрестный запрос в Мастере запросов. Выполним запрос по БД Temperature.mdb, предыдущего задания (2). Создадим предварительно запрос (ЗапросП), состоящий из двух таблиц: Station и Data. Выберем только те поля, которые нас интересую. В Мастере запросов перекрестный запрос создадим из запроса (ЗапросП), в строках которого расположены метеостанции, а в столбцах – годы наблюдений, на пересечении строк и столбцов – среднее значение температур. На рис. П1.4.11. показан, как выглядит запрос.
Рис.1.4.11. Перекрестный запрос.
В перекрестный запрос можно включить итоговые значения. Наш запрос выполнен без итоговых значений. Результат выполнения запроса показан на рис. П1.4.12. Средняя температура выводиться с тремя десятичными знаками.
Рис.1.4.12. Результат выполнения Перекрестного запроса
При необходимости можно отобрать не все записи. Так, если необходимо рассчитать среднее по температурам только за летние месяцы, нужно включить операцию Условие отбора.
Самостоятельно:
Создайте перекрестный запрос по БД Студент_заочн_2001.mdb, разместив название предмета, оценка которого пойдет в диплом в строках, а в столбцах – K-stud (например 944 и 4963, так как студентов много, для примера возьмем два студента), на пересечении покажите сами дипломные оценки. Итоговые значения не нужны. Разумеется, вам предварительно надо создать запрос, а затем получить перекрестный.
Создайте перекрестный запрос по БД Студент_заочн_2001.mdb, где показано количество часов по учебному плану для каждого предмета по семестру и общее количество часов. Желательно название предмета разместить в строках, семестры – в столбцах, а часы – на пересечении.
Запрос 1.4.8. Повторяющиеся записи.
Использование мастера запросов
Поясним построение запроса на примере. В таблице данных Data есть записи с одинаковой температурой, зарегистрированной в один и тот же год , но разные месяцы. С помощью мастера запросов построим запрос. Как выглядит сам запрос и его результат показаны на рис. П1.4.13. и на рис.П1.4.14 соответственно.
Рис.1.4.13. Поиск повторений для таблицы Data
Рис.1.4.14. Результат выполнения запроса на повторение
Самостоятельно:
Создайте запрос на поиск повторяющихся записей в БД Сhronicles.mdb . В таблице Data есть одинаково описанные явления, но года и летописи – разные.
Для поиска повторяющихся записей в таблице Data предварительно выпол-ните замену: тип поля (description) имеет тип MEMO, замените его на текстовое, и только тогда составляйте запрос на повторяющие записи.
Создайте запрос по БД Biblioteka.mdb, который показывает из таблицы Фонд , книги с одинаковым названием. Покажите также автора книги и инвентарный номер книги.
Запрос 1.4.9. Простой запрос.
Использование мастера запросов
Запрос 1.4.9. Отберите данные по метеостанциям «Петрозаводск » и «Сортовала», так, чтобы среднемесячная температура была в интервале от 10—15° С. (Это запрос 1.4.2, который мы выполняли в режиме
Конструктора). Выполним его с помощью Мастера запросов – Простой запрос. Появиться диалоговое окно, в котором можно последовательно выбрать таблицы и необходимые для отображения поля, а также все ключевые поля по которым осуществляются связи. Эти две станции входят в регион Калерия, для создания простого запроса выберем две таблицы; Stations и Data. Выбор полей для запроса 1.4.9 показан на рис. П1.4.15.
Рис. П1.4.15. Выбор полей запроса.
В данном случае следует сначала выбрать таблицу станций (главная) и добавить поля кода и названия, затем подчиненную таблицу данных и выбрать код станции, год месяц и среднюю температуру. В следующем окне можно выбрать тип запроса: обычный запрос на выборку или с группировкой. Выбрав с группировкой, получаем возможность настройка итоговых значений некоторых полей, а без группировки – получаем простой запрос.
Рис. П1.4.16. Установка групповых операций
После выбора операций, останется только нажать ОК и ввести имя запроса.
Самостоятельно:
. Составьте простой запрос из БД Biblioteka.mdb . Покажите количество книг и общую стоимость этих книг «на руках» у каждого читателя.
Составьте простой запрос по БД Сhronicles.mdb, и выведите количество записей в каждой летописи ХII в.
Запрос 1.4.10. Рекурсивный запрос
Другие виды запросов.
Запросы такого рода (добавление, обновление, удаление записи) позволяют выполнять операции манипулирования данными. В нашем курсе не будем рассматривать, как составляются эти запросы. Ранее при составлении запросов использовалось только внутреннее соединение таблиц. Для создание более сложных запросов рассмотрим внешнее соединение таблиц.
Запрос 1.4.10.
Составьте запрос по БД Сhronicles.mdb, где требуется отыскать годы, в течении которых наблюдались холодные зимы( явление №8) и одновременно лето было дождливым (явление №5). Для решения подобных запросов используется рекурсивное соединение. Создадим запрос в Конструкторе, дважды добавим в нее таблицу Data_phenomena, тогда Конструктор присвоит ей имя: Data_phenomena_1. Перетаскиванием мыши между таблицей и ее копией установим связь «один-к-одному» по полю Data. На одной из таблиц в Условии отбора устанавливаем значение 5, а для другой таблицы значение – 8. Подготовленный запрос представлен на рис. П1.4.17.
Рис П1.4.17. Модифицированный запрос с рекурсивным соединением.
В результате выполнения такого запроса мы получаем не только номер записи, но и годы, в которых происходили указанные события.
Самостоятельно:
В таблице данных Data(Temperature.mdb) есть записи с одинаковой температурой, зарегистрированной в один и тот же год , но разные месяцы. Так, одинаковая минимальная температура была в 3 и 2 месяцах. Так ли Это? Чтобы выполнить проверку, создайте прежде запрос на повторяющиеся записи по минимальной температуре в таблице Data , а затем создайте второй запрос на рекурсию, используя предыдущий, условия отбора по месяцам не выводите, покажите Tmin, год и название станций.
Tmin
Year
stations
stations
Создать запрос, который выводит средний балл по группам по предметам: конституционное и муниципальное право (код-1203056) и гражданское право (код- 1203022), отдельно для мужчин и женщин ( Студент_заочн_2001.mdb).
Запрос 1.4.11. Вложенные запросы
Другие виды запросов
Иногда для отбора нужной информации в запросе используют не только таблицы, но и существующие в БД запросы., которые в данном случае называют вложенными. Предположим, что в летописных книгах нужно выбрать те записи, данные по которым содержаться как минимум в двух источниках. Один из вариантов решения такой задачи – использование рекурсивного соединения таблиц, второй использование вложенного запроса.
Суть в том, что отобранные записи из первого запроса используются во втором запросе. Составим запрос, который отбирает данные по одному из источников. Добавим связывающие таблицы и описания явлений по годам. Поставим в качестве условия отбора название Новгородской летописи (НПЛ). Выполнения запроса иллюстрируется на рис. .П1.4.18
Рис.П1.4.18. Вложенный запрос
Самостоятельно:
Поставлена задача отобрать годы, в течении которых фиксировались одновременно дождливое лето и дождливая осень(БД Сhronicles.mdb). Одним из вариантов решения является построения запроса на дождливую осень и затем использование его в качестве вложенного запрос, который отбирает годы с дождливым летом.
Создайте запрос, вычисляющий средний балл для каждого студента (необходимо учитывать только студентов, сдававших экзамены).
На основании этого запроса и таблицы «Студенты» создайте запрос, дающий распределение среднего балла у мужчин. Экспортируйте полученный результат в Excel. (БД : Студент_заочн_2001.mdb).
Создайте запрос, который позволяет найти средний балл, тех студентов специальности ГМУ, по предмету «логика», которые по «математике» имеют балл выше 30.