Создание сложных запросов в базе данных "Библиотека"

Практическая работа «Создание сложных запросов»

Цель работы:

  • Повторить создание запросов в базе
  • Познакомиться со сложными запросами в СУБД Access
  • Научиться составлять запросы с параметромитоговые запросы

Сохранение работы: Создайте резервную копию файла Библиотека Иванова.mdb для безопасности данных, только после этого открывайте базу. 
Оценка за урок (убедитесь, что ваша БД есть в вашей папке):

  • На «5» необходимо выполнить пункты 1-3.
  • На «4» необходимо выполнить пункты 1-2.
  • На «3» необходимо выполнить пункты 1

1. Повторение создания простых запросов
Создайте запросы «Все Книги Толстого» и «Все книги зарубежных писателей, на русском языке».
Подсказка: условие, что страна не Россия в условии отбора можно записать или not “Россия” или <> “Россия” (не равно). В последнем запросе поле «Язык» можно не отображать, для этого в режиме конструктора надо убрать для соответствующего поля галочку в строке Вывод на экран (см.рис.1).

Создайте запрос «Книги на английском или немецком». Подсказка: Условие отбора заполняем в две строки «Английский» или «Немецкий».

2. Запросы с параметром
Прочитайте текст. Мы рассмотрели уже достаточно много запросов с заданным условием отбора. У таких запросов есть существенный недостаток – если, например, разработчик предусмотрел запрос, отбирающий книги, имеющие меньше 200 страниц, то пользователь базы уже не может отобрать книги с количеством страниц менее 150 страниц или мене 300, так как у него нет соответствующего запроса. Специальный тип запросов, называемый запросом с параметром, позволяет пользователю самому ввести критерий отбора данных на этапе запуска запроса. Этим приемом обеспечивается гибкость работы с базой.
Создадим запрос с параметром «Поиск книг в библиотеке по фамилии автора».

  • В окне базы данных Библиотека откройте вкладку Запросы. Запустите создание запроса в режиме конструктора – откроется бланк запроса по образцу (см.рис.1). Так как в результате работы запроса мы хотим получить список книг какого-то выбранного автора, то в запросе надо взять фамилиюимя автора и названиекниги. Поэтому добавляем в конструкторе запроса две таблицы – Авторы и Книги.
    Строку Условие отбора поля Фамилия надо записать так, чтобы при запуске запроса пользователь сам мог ввести нужное значение. Текст обращения к пользователю заключаем в квадратные скобки. Если бы мы хотели получить список всех книг Пушкина, мы бы написали ="Пушкин" или просто "Пушкин", но если мы хотим дать пользователю возможность выбора – мы напишем =[Введите фамилию искомого автора] (знак равно можно опустить).
  • Закройте запрос и при закрытии дайте ему имя «Поиск книг по фамилии автора».
    В окне базы запустите вновь созданный запрос и в появившемся диалоговом окне введите значение, напримерПушкин или Толстой. Щелкните ОК (рис.2).

    В зависимости от содержания данных в базе будет сформирована результирующая таблица.
  • Итак, вы научились создавать запросы с параметром, и узнали, что они опираются на простые запросы на выборку, но в Условии отбора имеют заключенный в квадратные скобки текст, обращенный к пользователю.

Создадим запрос с параметром для нахождения книг, изданных в заданный пользователем период. 
Условие отбора для поля ДатаИздания запишется так (рис.3): 
>[издана позднее даты:] And <[издана раньше даты:]

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

  • Запустите создание запроса в режиме конструктора, добавьте таблицу Книги, из нее выберите поля Язык иНазвание. Для поля Язык включите сортировку по возрастанию.
  • На панели инструментов щелкните по кнопке Групповые операции  (или меню Вид>Групповые операции). Эта команда необходима для создания в нижней части бланка строки Групповые операции. Именно на ее базе и создаются итоговые вычисления. Все поля, отобранные для запроса, получают в этой строке значениеГруппировка.
  • Для поля, по которому производится группировка (в нашем случае это язык) оставьте в строке Групповыеоперации значение Группировка. Для остальных полей щелкните по этой строке и в выпадающем списке выберете подходящую операцию для расчета значений в данном поле. В нашем случае для поля Названиевыбираем операцию Count – подсчет количества записей, вошедших в каждую языковую группу (рис.4).
  • Закройте бланк запроса и дайте ему имя «Подсчет количества книг по языкам».
  • Запустите вновь созданный запрос и убедитесь, что он отображает то, что нужно.

Создайте итоговый запрос «Подсчет количества книг по авторам»Подсказка – в конструкторе запроса добавляем две таблицы, считаем по полю Название, группируем по полю Фамилия и Имя.
Добавьте в библиотеку автора – Алексей Николаевич Толстой, книга – Петр первый, год издания 1979520 страниц. После этого запустите запрос еще раз – проверьте, правильно ли отображаются данные.
Создайте итоговый запрос «Подсчет количества писателей по странам». Подсказка – см. рис.5.

4. Дополнительное задание на оценку «5» 
А) Создайте запрос «Количество книг в библиотеке».

В) Создайте запрос «Среднее количество страниц в книге и суммарное количество страниц библиотечного фонда»
Подсказка: Sum – сумма, Avg – среднее значение.

С) Измените имя поля в запросе «Подсчет количества книг по авторам». Сейчас один из столбцов называетсяCount-Название, а это не передает весь смысл содержащихся в столбце данных. Хорошо бы он назывался «Количество книг автора ». Для переименования столбца в итоговом запросе выполните пункты:
   1) Откройте запрос в режиме конструктора.
   2) Установите курсор в бланке перед первой буквой текущего имени поля. 
   3) Введите новое имя с последующим знаком двоеточия. 
Пример: Количество книг автора: Название

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