Построение запроса на основе другого запроса
⇐ ПредыдущаяСтр 5 из 5 Построение запроса на основе другого запроса Выполним анализ оценок, полученных студентами по различным предметам. Например, подсчитаем число оценок (2, 3, 4, 5) по каждому из предметов. Создадим сначала многотабличный запрос на выборку на основе таблиц СТУДЕНТ, УСПЕВАЕМОСТЬ, ПРЕДМЕТ, ПРЕПОДАВАТЕЛЬ, формирую- щий сведения об оценках, полученных студентами по различным предметам. Для этого в режиме конструктора создадим схему данных запроса и бланк, как показано на рис. 7. 24. Сохраним этот запрос с именем " оценки". В результате выполнения этого запроса будет получена таблица, источником записей которой является таблица УСПЕВАЕМОСТЬ, а расшифровывающие данные выбираются из таблиц: ПРЕДМЕТ, СТУДЕНТ, ПРЕПОДАВАТЕЛЬ. Таким образом, каждая строка результата будет содержать информацию об одной оценке, полученной студентом по указанному в строке предмету. Число строк в таблице запроса будет равно числу строк в таблице УСПЕВАЕ- МОСТЬ. Рис. 7. 24. Многотабличный запрос об оценках студентов Для подсчета числа различных оценок (2, 3, 4, 5) по каждому из предметов на основе этого запроса создадим новый запрос - Число оценок. При создании нового запроса в окне Отразить таблицу/Добавление таблицы на вкладке Запросы выберем из списка запрос оценки. Заполним бланк запроса, как по- казано на рис. 7. 25. Результат выполнения запроса Число оценок приведен на рис. 7. 26, где в столбце Выражение 1 отображено количество оценок, полученных по каждо- му предмету. Рис. 7. 25. Построение запроса на основе запроса оценки Замечание. Нет необходимости предварительно выполнять запрос ( оценки ), на основе которого выполняется другой запрос ( Число оценок ). Выполнение вложенного запроса инициируется системой при выполнении запроса, по- строенного на нем.
Рис. 7. 26. Результаты запроса, построенного на другом запросе Упражнения 3 · Создайте на основе запроса оценки, приведенного на рис. 7. 24, запрос для анализа оценок, выставленных каждым из преподавателей. Резуль- тат запроса должен содержать количество оценок (2, 3, 4, 5), выставлен- ных каждым преподавателем. Подпись столбца с результатами выпол- нения групповой операции Count Выражение1 замените на Количество оценок · Создайте на основе запроса оценки запрос для определения числа сту- дентов, получивших 2, 3, 4 или 5 по предмету, задаваемому в диалоге с пользователем · Создайте на основе запроса оценки запрос для подсчета числа студен- тов в группе, получивших 2 (или другую заданную оценку) по каждому предмету. Предусмотрите ввод номера группы и оценки в диалоге с пользователем · Создайте на основе запроса оценки запрос для подсчета средней оцен- ки в группе по каждому предмету; средней величины оценок, выстав- ленных преподавателем; средней успеваемости по каждому предмету Решение задачи, требующей выполнения нескольких запросов и сохранения промежуточных результатов Пусть необходимо определить среднюю нагрузку преподавателя кафедры в текущем семестре. Для этого необходимо подсчитать число преподавателей кафедры, затем общее количество часов занятий, проводимых кафедрой, и за- вершить решение задачи расчетом средней нагрузки преподавателя. Подготовим и последовательно выполним соответствующие запросы. Первый запрос. Создадим первый запрос на выборку, в котором по таблице ПРЕПОДАВАТЕЛЬ с помощью функции Count подсчитаем число преподава- телей по кафедрам. Сохраним запрос под именем " Число преподавателей ка- федры". Второй запрос. Подготовим второй запрос на выборку для подсчета общего числа часов занятий, проводимых каждой кафедрой.
Этот запрос построим на базе таблиц ПРЕПОДАВАТЕЛЬ, ИЗУЧЕНИЕ, КА- ФЕДРА и запроса Число преподавателей кафедры (рис. 7. 25). Таблицы ПРЕПОДАВАТЕЛЬ и ИЗУЧЕНИЕ нужны для суммирования числа часов за- нятий, проводимых преподавателями каждой кафедры. Таблица КАФЕДРА необходима для включения в результат наименования кафедры, а запрос Чис- ло преподавателей кафедры - для включения в результат числа преподава- телей на кафедре. Записи этого запроса формируются на основе записей таблицы ИЗУЧЕНИЕ, причем число записей до проведения группировки равно числу записей в этой таблице. В результате запроса к каждой записи добавляется наименование ка- федры НКАФ, по которому и производится группировка. Число преподавате- лей кафедры Count_TAБH никак не нарушает требуемого объединения запи- сей в группы, посеольку для каждой кафедры является единственным. Число записей в таблице результата запроса равно числу кафедр. Рис. 7. 27. Запрос для подсчета общего числа часов занятий, проводи- мых каждой кафедрой
В рамках данного запроса нельзя сразу вычислить среднюю нагрузку препо- давателя, поскольку число преподавателей кафедры является результатом вы- полнения групповой операции. Использование результатов выполнения за- проса с групповой операцией не допускается в вычисляемых полях. Поэтому необходимо сохранить результаты выполнения второго запроса в новой таб- лице и на ее основе построить следующий запрос, в котором будет произведен расчет средней нагрузки преподавателя. Чтобы сохранить полученные результаты, преобразуем второй запрос на вы- борку в запрос на создание таблицы. Таблице, которая будет создана запро- сом, присвоим имя " Нагрузка". Запрос сохраним под именем " Нагрузка на кафедре" (см. рис. 7. 27). Второй запрос в режиме таблицы приведен на рис. 7. 28. Таблица НАГРУЗКА, сохраняемая в базе данных, содержащая результат решения этого запроса, приведена на рис. 7. 29.
Рис. 7. 28. Запрос Нагрузка на кафедре в режиме таблицы
Рис. 7. 29. Сохраненная таблица НАГРУЗКА с результатами второго за- проса
Третий запрос. Для окончательного решения задачи расчета средней нагруз- ки преподавателя кафедры подготовимна базе таблицы НАГРУЗКА третий запрос на выборку с вычисляемым полем. Для создания вычисляемого поля, расчитывающего среднюю нагрузку преподавателя, в строку Поле пустого столбца введем выражение [Sum_ЧАСЫ]/[Count_ТАБН]. Третий запрос на выборку с вычисляемым полем представлен на рис. 7. 30. В таблице результата следует изменить заголовок столбца Выражение1, фор- мируемый по умолчанию для вычисляемого поля, и его формат (для получе- ния результата с округлением до целого). Для этого вызовем свойства поля с помощью контекстно-зависимого меню. Зададим в качестве подписи поля значение " Средняя нагрузка преподавателя", формат поля определим как фик- сированный, а параметру Число десятичных знаков присвоим значение " 0" Рис. 7. 30. Запрос, завершающий задачу расчета средней нагрузки
Результаты выполнения запроса после изменения подписей полей в свойствах приведены на рис. 7. 31. Рис. 7. 31. Результаты расчета средней нагрузки преподавателей по кафедрам
Процесс решения задачи. Для решения поставленной задачи необходимо по- следовательно выполнить второй запрос - Нагрузка на кафедре (см. рис. 7. 25), а затем третий запрос - (см. рис. 7. 30). Первый запрос Число преподавателей кафедры выполнится автоматически при выполнении запроса Нагрузка на кафедре. Для того чтобы автоматизировать решение задачи, требующей выполнения нескольких запросов, нужно использовать средства разработки приложения пользователя, например, написать макрос. Технология подготовки макроса, который позволяет выполнить последовательность запросов, рассмотрена ниже.
Подведение итогов урока, выставление оценок
Домашнее задание: составить краткий конспект по теме, выполнить упражнения1-3.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|