access_2010_в_примерах (833831), страница 10
Текст из файла (страница 10)
7.10) выберем таблицуПРЕДМЕТ, на которой построен запрос. Справа отобразится список ее полей.Последовательно выберем нужные поля, добавляя их двойным щелчком мыши, знаки операций вводятся с клавиатуры. При этом в верхней части окнасформируется выражение.Рис. 7.10. Окно построителя выражений при формировании вычисляемого поля.Сохраним запрос под именем «Разность часов по предмету». Сохранить.
Сохраненный запрос можно выполнить, выделив запрос в окне Все объектыAccess, нажатием правой кнопки мыши и выбрав кнопку Открыть.Построенный запрос может быть использован для проверки правильности заполнения поля ЧАСЫ в таблице ПРЕДМЕТ.Использование групповых операций в запросахНазначение групповых операцийГрупповые операции позволяют выделить группы записей с одинаковымизначениями в указанных полях и использовать для этих групп одну из статистических функций. В Access предусмотрено девять статистических функций:y Sum - сумма значений некоторого поля для группы80yyyyAvg - среднее от всех значений поля в группеMax, Min - максимальное, минимальное значение поля в группеCount - число значений поля в группе без учета пустых значенийStdev - среднеквадратичное отклонение от среднего значения поля вгруппеy Var - дисперсия значений поля в группеy First и Last - значение поля из первой или последней записи в группеРезультат запроса с использованием групповых операций содержит по однойзаписи для каждой группы.
В запрос включаются поля, по которым производится группировка, и поля, для которых выполняются групповые функции.Порядок создания запроса с использованием групповых операцийДля создания запроса с использованием групповых операций формируется запрос на выборку. В бланк запроса включаются поля, по которым надо произвести группировку, и поля, по которым надо произвести статистические вычисления.Выполните команду Создать/Конструктор запросов и на панели инструментов конструктора запросов нажмите кнопку Итоги.Для групповых вычислений по некоторому полю нужно заменить в нем словоГруппировка на нужную статистическую функцию.
Выбрать нужную функцию можно через раскрывающийся в поле список.Конструирование однотабличного запроса с групповой операциейРассмотрим технологию конструирования однотабличного запроса с групповой операцией на примере таблицы СТУДЕНТ.Запрос с функцией CountОпределим фактическое число студентов в группе. Создадим запрос на выборку из таблицы СТУДЕНТ. Из списка таблицы СТУДЕНТЫ перетащим вбланк запроса поле НГ (номер группы).
Таким образом мы укажем, что поэтому полю должна производиться группировка. Перетащим в бланк запросаполе НС, по которому будет вычисляться функция Count для подсчета числастудентов в группе.Нажмем кнопку Итоги. Заменим слово "Группировка" в столбце НС на функцию Count. Для этого вызовем список и выберем эту функцию. Бланк запросапримет вид, показанный на рис. 7.11. Результат запроса показан на рис. 7.12.81Рис. 7.11. Запрос с групповой операцией подсчета числа студентов вгруппеРис.
7.12. Результат подсчета числа студентов в группеПодпись поля "Count_HC" можно заменить на "Фактическое число студентов". Для ввода этой подписи в бланке запроса установим на поле НС курсормыши и нажмем правую кнопку. В контекстно-зависимом меню выберем команду Свойства . В Окне свойств наберем в строке Подпись "Фактическоечисло студентов". Таблица результата после доработки запроса показана нарис. 7.13. Сохраним запрос под именем "Число студентов в группах".Рис. 7.13. Таблица результата с измененной подписью поля82Запрос с функцией AvgПодсчитаем средний проходной балл в группе. Сформируем запрос на выборку для таблицы СТУДЕНТ с функцией Avg для поля ПБАЛЛ (проходной баллстудента).
В бланке запроса заполним поля, как показано на рис. 7.14.Рис. 7.14. Запрос с групповой операцией подсчета среднего значенияДля ограничения точности результата двумя знаками выберем в Окнесвойств в строке Формат поля значение Фиксированный. Результат выполнения запроса представлен на рис. 7.15.Рис. 7.15. Результат подсчета среднего значенияСохраним этот запрос под именем "Средний проходной балл группы"Запрос с несколькими групповыми функциямиВыполним расчет числа студентов и среднего проходного балла в группе водном запросе.
Это возможно, т. к. группы записей в обоих случаях формируются одинаково (рис. 7.16). Сохраним этот запрос под именем "Число студентов и средний ПБАЛЛ группы".Задание условий отбора в запросах с групповыми операциямиВ запрос с групповыми операциями можно включать поля для задания условий отбора записей из таблиц.83Рис. 7.16. Запрос с одновременным использованием двух групповыхфункцийПодсчитаем число студентов в каждой из групп с проходным баллом больше4,7.Для этого в запрос Число студентов и средний ПБАЛЛ группы вторичновключим поле ПБАЛЛ и в строке Групповые операции заменим значениеГруппировка на значение Условие, выбрав его из списка.
После этого введемв строку Условие отбора ">4,5" (рис. 7.17).Рис. 7.17. Запрос с групповыми операциями и полем, введенным дляопределения условий отбора записей из таблицы СТУДЕНТЗаметим, что средний балл в этом запросе также вычисляется только для студентов с проходным баллом, превосходящим 4,7.Условие отбора, заданное в поле, по которому проводится группировка, или вполе, где записана функция группировки, позволяет отобрать только нужные84группы записей, например, группы студентов с заданным номером или с заданным средним проходным баллом.Конструирование запроса на создание таблицыЗапрос на создание таблицы используется для сохранения результата запроса.Этот вид запроса основан на запросе на выборку, но, в отличие от него, сохраняет таблицу с результатами запроса.Необходимость в сохранении результатов запроса возникает, например, когданевозможно построить запрос непосредственно на другом запросе.
К этомуслучаю относится, в частности, построение запроса на обновление полей наоснове запроса с операцией группировки.Сформируем запрос на создание таблицы на примере ранее полученного запроса на выборку с групповыми вычислениями Число студентов в группах(см. рис. 7.11-7.13).В области навигации вызовем названный запрос в режиме конструктора запросов. Преобразуем этот запрос в запрос на создание таблицы, выбрав типзапроса на панели конструктора Создание таблицы.
В окне Создание таблицы введем имя создаваемой таблицы "Число студентов" (рис. 7.18).Рис. 7.18. Определение имени таблицы, создаваемой в запросеДля того, чтобы просмотреть, какие записи будут помещены в новую таблицу,щелкните по кнопке панели инструментов Выполнить. Выполните запрос,чтобы таблица ЧИСЛО СТУДЕНТОВ была сохранена в базе данных. Теперьэту таблицу можно увидеть в списке таблиц окна БД.Упражнение. Преобразуйте запрос на выборку Средний проходной баллгруппы (см.
рис. 7.14, 7.45) в запрос на создание таблицы, а создаваемую таблицу назовите “СРБАЛЛ”.85Конструирование запроса на обновлениеОбновление полей значениями, рассчитанными с использованиемгрупповых операцийРассмотрим технологию создания запроса на обновление на примере обновления поля КОЛ (количество студентов группы в таблице ГРУППА).Количество студентов в группах ранее было подсчитано в запросе на выборкуЧисло студентов в группах (см. рис. 7.11-7.13) с использованием статистической функции Count. Запрос на обновление непосредственно на таком запросепостроить нельзя. Поэтому используем для обновления не сам запрос, а таблицу ЧИСЛО СТУДЕНТОВ, полученную по запросу на создание таблицы впредыдущем пункте.Для формирования запроса на обновление сначала создадим запрос на выборку на основе двух таблиц: обновляемой таблицы ГРУППА и таблицы ЧИСЛОСТУДЕНТОВ, содержащей данные для обновления.
Заметим, что в подсхемеданных запроса автоматически устанавливается связь этих таблиц по полю сименем НГ. Для преобразования запроса на выборку в запрос на обновление(рис. 7.19) выберем на панели конструктора тип запроса Обновление.Рис. 7.19. Запрос на обновление таблицы ГРУППАЗаполним бланк запроса. Перетащим обновляемое поле КОЛ из списка таблицы ГРУППА. В строке Обновление введем имя поля "Count_HC" (таблицыЧИСЛО СТУДЕНТОВ), из которого выбираются значения для обновления.Имя поля вводится в квадратных скобках.Запрос можно выполнить, не выходя из режима конструктора. Содержимоеобновляемого поля КОЛ можно просмотреть в режиме таблицы до и после86выполнения запроса.
Для последующего использования подготовленного запроса сохраним его под именем "Обновление ГРУППА_КОЛ".Упражнение1. Произведите обновление поля ПБАЛЛ – средний проходной балл втаблице ГРУППА значениями из ранее созданной таблицы СРБАЛЛ.2. Произведите обновление поля СРБАЛЛ-ГР – средняя оценка в группепо предмету в таблице ИЗУЧЕНИЕ. Для выполнения задания:• создайте запрос к таблице УСПЕВАЕМОСТЬ для расчета среднейоценки в группе по предмету и сохраните результат в таблице, длячего группировку произведите по двум полям: НГ – номер группыи КП – код предмета:• обновите поле СРБАЛЛ-ГР в таблице ИЗУЧЕНИЕ, используя сохраненный результат.Использование выражений в запросе на обновлениеРассмотрим формирование запроса на обновление с использованием выражения на примере заполнения поля ЧАСЫ для лекционных занятий в таблицеИЗУЧЕНИЕ.
Пусть поле ЧАСЫ должно обновляться данными, вычисляемыми на основе полей ЛЕК (часы лекций) и ЧС (число семестров) из таблицыПРЕДМЕТ. Расчетное число часов по лекциям определим по формулеЛЕК/ЧС.В соответствии с задачей в записях лекционных занятий таблицы ИЗУЧЕНИЕнеобходимо обновить поле ЧАСЫ расчетным числом часов. Записи о лекционных занятиях можно выбрать по значению поля ВИДЗ этой таблицы, т.
к. внем указан вид занятия. Данные для расчета среднего числа часов содержатсяв таблице ПРЕДМЕТ. Таким образом запрос должен строиться на основе таблиц ИЗУЧЕНИЕ и ПРЕДМЕТ.Создадим сначала запрос на выборку на основе таблиц ИЗУЧЕНИЕ и ПРЕДМЕТ. Затем преобразуем его в запрос на обновление, нажав соответствующуюкнопку панели инструментов.Включим в бланк запроса обновляемое поле ЧАСЫ таблицы ИЗУЧЕНИЕ. Встроке Обновление для этого поля введем выражение [ЛЕК]/[ЧС]. Для отборав таблице ИЗУЧЕНИЕ обновляемых записей о лекционных занятиях в бланкзапроса включим поле ВИДЗ и укажем в поле Условия отбора значение"лек".Окончательно сформированный запрос показан на рис.7.20.87Выполним запрос, нажав кнопку Выполнить.