Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теорія Access 2010.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.57 Mб
Скачать

Побудова запиту на основі іншого запиту

Виконаємо аналіз оцінок, отриманих студентами по різних предметах. Наприклад, підрахуємо число оцінок (2,3,4,5) по кожному із предметів.

Створимо спочатку багатотабличний запит на вибірку на основі таблиць СТУДЕНТ, УСПІШНІСТЬ, ПРЕДМЕТ, ВИКЛАДАЧІ, що формує відомості про оцінки, отриманих студентами з різних предметах. Для цього в режимі конструктора створимо схему даних запиту і бланк, як показано на рис.7.24. Збережемо цей запит з ім'ям "Оцінки".

У результаті виконання цього запиту буде отримана таблиця, джерелом записів якої є таблиця УСПІШНІСТЬ, а дані вибираються з таблиць: ПРЕДМЕТ, СТУДЕНТ, ВИКЛАДАЧІ. Таким чином, кожен рядок результату буде містити інформацію про одну оцінку, отриманої студентом по вказаному в рядку предмету. Число рядків у таблиці запиту буде дорівнює числу рядків у таблиці УСПІШНІСТЬ.

Рис.7.24. Багатотабличний запит про оцінки студентів

Для підрахунку числа різних оцінок (2,3,4,5) по кожному з предметів на основі цього запиту створимо новий запит - Кількість оцінок. При створенні нового запиту у вікні Отобразить таблицу/Добавление таблицы на вкладці Запросы виберемо з списку запит Оцінки. Заповнимо бланк запиту, як показано на рис.7.25.

Результат виконання запиту Кількість оцінок наведене на рис. 7.26, де в стовпці Выражение 1 відображена кількість оцінок, отриманих по кожному предмету.

Рис.7.25. Побудова запиту на основі запиту Оцінки

Зауваження. Немає необхідності попередньо виконувати запит (Оцінки), на основі якого виконується інший запит (Кількість оцінок). Виконання вкладеного запиту ініціюється системою при виконанні запиту, побудованого на ньому.

Рис. 7.26. Результати запиту, побудованого на іншому запиті

Рішення завдання, що вимагає виконання декількох запитів із зберенням проміжних результатів

Нехай необхідно визначити середнє навантаження викладача кафедри у поточному семестрі. Для цього необхідно підрахувати число викладачів кафедри, потім загальна кількість годин занять, проведених кафедрою, і завершити рішення завдання розрахунком середнього навантаження викладача.

Перший запит. Створимо перший запит на вибірку, у якому по таблиці ВИКЛАДАЧІ за допомогою функції Count підрахуємо число викладачів по кафедрах. Збережемо запит під ім'ям "Число викладачів кафедри".

Другий запит. Підготуємо другий запит на вибірку для підрахунку загального числа годин занять, проведених кожною кафедрою.

Цей запит побудуємо на базі таблиць ВИКЛАДАЧІ, НАВЧАННЯ, КАФЕДРА і запиту Число викладачів кафедри (рис. 7.25). Таблиці ВИКЛАДАЧІ і НАВЧАННЯ потрібні для підсумовування числа годин занять, проведених викладачами кожної кафедри. Таблиця КАФЕДРА необхідна для включення у результат найменування кафедри, а запит Число викладачів кафедри - для включення у результат числа викладачів на кафедрі.

Записи цього запиту формуються на основі записів таблиці НАВЧАННЯ, причому число записів до проведення угруповування дорівнює числу записів у цій таблиці. У результаті запиту до кожного запису додається найменування кафедри НКАФ, по якому і відбувається угруповування. Число викладачів кафедри Count_TAБ ніяк не порушує необхідного об'єднання записів у групі, оскільки для кожної кафедри є єдиним. Число записів у таблиці результату запиту дорівнює числу кафедр.

Рис. 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). Перший запит Число викладачів кафедри виконається автоматично при виконанні запиту Навантаження на кафедрі. Для того щоб автоматизувати рішення завдання, що вимагає виконання декількох запитів, потрібно використати засоби розробки додатка користувача, наприклад, написати макрос. Технологія підготовки макросу, що дозволяє виконати послідовність запитів, розглядається нижче.