Практична робота на тему Запити
« Назад Запити Конструювання однотабличного запиту на вибірку Розглянемо процес конструювання однотабличного запиту на вибірку на прикладі одержання інформації з таблиці ПРЕДМЕТ бази даних «Навчальний процес». Використання логічних операцій в умові відбору Нехай треба вибрати предмети, по яких загальне число навчання не більше 100, і є лекції, а також вибрати предмети, по яких загальне число годин більше 150 і число семестрів навчання не більше двох. Результат повинен містити найменування предмета (НП), загальне число годин по предмету (ГОДИНИ), кількість лекційних годин (ЛЕК) і число семестрів (ЧС). Для створення запиту в режимі конструктора виберемо вкладку Создать на панелі швидкого доступу і натиснемо кнопку Конструктор запросов. Після натискання кнопки з'являється вікно запиту на вибірку в режимі конструктора Запрос1 (рис. 7.1) і діалогове вікно Добавление таблицы. У діалоговому вікні виберемо таблицю ПРЕДМЕТ і натиснемо кнопку Добавить. Обрана таблиця буде відображена в області схеми даних запиту. Закриємо вікно Добавление таблицы. У вікні конструктора (рис. 7.1) перетягнемо зі списку полів таблиці ПРЕДМЕТ поля НП, ГОДИНИ, ЛЕК і ЧС у стовпці бланка запиту у рядок Поле. Сформульовані в завданні умови вимагають формування наступного логічного виразу: (ГОДИНИ<=100 AND ЛЕК<>0) OR (ГОДИНИ>150 AND ЧС<3) Тут ЛЕК<>0 (число лекцій не дорівнює нулю), відповідає заданому в завданні умові вибрати предмети, у яких є лекції. Умови з перших дужок запишемо у відповідних полях ГОДИНИ і ЛЕК першої строки Условия отбора. Між умовами в різних полях одного рядка виконується логічна операція . Умови із других дужок запишемо у відповідних полях ГОДИНИ і ЧС другого рядка Условия отбора. Між умовами, записаними в різних рядках, виконується логічна операція . Виконаємо запит, нажавши на панелі конструктора запитів кнопку Выполнить. На екрані з'явиться вікно запиту в режимі таблиці із записами з таблиці ПРЕДМЕТ, які відповідають заданим умовам відбору. Збережемо запит, натиснувши кнопку Сохранить на вкладці Файл і задавши потрібне ім'я запиту. Закриємо поточний запит натиснувши кнопку вікна запиту Закрыть. Збережений запит можна виконати, виділивши запит у вікні Все объекты Access, натисканням правої кнопки миші і вибравши кнопку Открыть. Використання в умові відбору виразів з іменами полів Нехай необхідно перевірити правильність завдання загальних годин у таблиці ПРЕДМЕТ. При запиті повинні відбиратися тільки ті записи, у яких значення у полі ГОДИНИ не дорівнює значенню, отриманому при додаванні значень полів ПР і ЛЕК. Така умова записується у бланку запиту в стовпці ГОДИНИ і у полях [ПР] і [ЛЕК], як показано в бланку запиту на рис. 7.2.
Конструювання багатотабличного запиту на вибірку Запит на основі декількох взаємозалежних таблиць Нехай необхідно одержати інформацію про оцінки отриманих студентами по всіх предметах. Результат повинен містити прізвище студента, найменування зданих предметів і оцінки. Для створення запиту на панелі швидкого доступу виберемо вкладку Создание і натиснемо кнопку Конструктор запросов. Формування схеми даних запиту У вікні Додавання таблиці виберемо таблиці:
Закриємо вікно Добавление таблицы. У вікні конструктора запитів (рис. 7.3) представлена схема даних запиту, що містить обрані таблиці. Між таблицями автоматично встановлені необхідні зв'язки:
Підготовка бланка запиту Оскільки в запиті використовується кілька таблиць, у бланку запиту зручно бачити ім'я таблиці поряд з ім'ям поля. Для відображення імен таблиць у бланку запиту (рис. 7.4) натиснемо кнопку Имена таблиц на панелі інструментів конструктора або натиснемо відповідну кнопку в контекстному меню. Перетягнемо за допомогою миші поля, що включають у результат виконання запиту, у строку бланка запиту Поле:
Введення значень в умови відбору записів Нехай необхідно одержати інформацію про успішність конкретних студентів: Боярскої Н.П. і Макової. Задамо у рядку Условие отбора їх прізвища. Запишемо прізвища студентів у різних рядках бланка запиту, оскільки необхідно вибрати записи зі значенням у поле ПІБ- Боярська або Макова. Оскільки ініціали студентки Макової невідомі, її прізвище задамо з використанням символу шаблона «*». Прізвище з ініціалами має крапки, тому його треба брати в лапки. Після введення прізвища із символом шаблону система сама вставляє оператор Like, що визначає пошук за зразком. Заповнений бланк запиту представлений на рис. 7.4. Виконаємо запит, натиснувши на панелі конструктора запитів кнопку Выполнить. Зауваження Запис про заданого студента з'являться у результуючій таблиці запиту тільки в тому випадку, якщо запис про цього студента є в таблиці СТУДЕНТ, а в таблиці НАВЧАННЯ є записи, пов'язані із записом про студента. Формування записів результату при виконанні запиту По заданому прізвищу студента - Боярська Н.П.- у таблиці СТУДЕНТ відшукується запис. За значенням ключа зв'язку НГ+НС здійснюється вибірка підлеглих записів з таблиці УСПІШНІСТЬ із оцінками даного студента по різних предметах (у поле ОЦІНКА). Для кожного із цих записів за значенням ключа зв'язку КП вибирається один запис з найменуванням предмета (НП) з таблиці ПРЕДМЕТ. Таким чином, таблиця з результатом запиту буде містити по одному запису про кожен предмет, зданому студентом. Аналогічно формуються записи для другого заданого в запиті студента - Макової. Введення параметрів у запит У попередньому прикладі для завдання прізвища конкретного студента необхідно було коректувати бланк запиту. Щоб уникнути цього, доцільно використати в запиті параметри. При цьому Access перед виконанням запиту через діалогове вікно буде запитувати у користувача конкретні значення параметрів і уведе їх в умови відбору. Нехай необхідно одержати інформацію про оцінку студента по заданому предмету. В умову відбору поля ПІБ замість конкретного прізвища введемо назву параметра, по якому буде запитуватися прізвище при виконанні запиту. Назву параметра введемо як текст у квадратні дужки: [Прізвище і ініціали студента] Цей текст Access сприймає як ім'я параметра (рис. 7.5). В умову відбору поля НП уведемо другий параметр запиту: [Найменування предмету] При виконанні запиту Access виведе діалогові вікна, представлені на рис. 7.6, у які користувач зможе ввести потрібні значення параметрів. Використання імен полів різних таблиць в умові відбору Нехай необхідно вибрати записи з таблиці НАВЧАННЯ, у яких ГОДИНИ практичних занять по інформатиці не відповідають рівномірному розподілу по семестрах всіх годин практики. Для рішення цього завдання необхідно використати таблиці:
Для відбору записів про практичні заняття по інформатиці з таблиці НАВЧАННЯ треба у рядку Условие отбора для поля НП (ТАБЛИЦЯ ПРЕДМЕТ) задати значення «Інформатика», а для поля ВИД3 (таблиці НАВЧАННЯ) задати значення «пр» (практичне заняття). При рівномірному розподілі практики по семестрах загальне число годин практичних занять з предмету (ПР) повинно дорівнювати добутку годин практики (ГОДИНИ) з таблиці НАВЧАННЯ на число семестрів (ЧС) з таблиці ПРЕДМЕТ. Для рішення треба включити результати тільки тих записів, для яких число годин не відповідають цьому добутку. Для цього запишемо в Условие отбора поля ПР (таблиці ПРЕДМЕТ) вираз: [НАВЧАННЯ] ! [ГОДИНИ]*[ЧС] Запит на вибірку з умовами відбору записів наведений на рис. 7.7., а результати виконання запиту наведені на рис. 7.8. Створення полів, що обчислюються, у запитах Поле, що обчислюється, включене у запит, дозволяє одержати нове поле з результатами обчислення, відображуваними тільки в таблиці запиту, і не створює полів у вихідних таблицях бази даних. Розглянемо технологію створення запиту з обчислюємим полем на прикладі таблиці ПРЕДМЕТ. Нехай необхідно знайти записи про предмети, у яких загальне число годин по предмету не збігається із сумою годин лекцій і практики. Для рішення цього завдання розрахуємо різницю між загальним числом годин по предмету (поле ГОДИНИ) і сумою годин лекцій (поле ЛЕК) і практики (поле ПР). У відповідь включимо тільки ті записи, для яких ця різниця не дорівнює нулю. Створимо запит на вибірку для таблиці ПРЕДМЕТ. Перетягнемо в бланк запиту з полями НП, ПР, ЛЕК, ГОДИНИ (рис.7.9). Створення обчисленого поля У порожній клітинці рядка Поле запишемо вираз: [ГОДИНИ] - [ПР] - [ЛЕК] Для відбору записів з ненульовим значенням різниці у рядку Условие отбора введемо <>0 (не дорівнює 0). Після введення виразу система формує ім'я обчислюємого поля (за замовчуванням - «Выражение 1». Це ім'я вставиться перед виразом. Для зміни імені встановимо курсор миші і натиснемо праву кнопку миші. У контекстному меню виберемо Свойства поля, а в рядок Подпись уведемо нове ім'я поля - «ГОДИНИ не рівні ПР+ЛЕК». Ім'я поля може бути виправлене також безпосередньо у бланку запиту. Використання Построитель выражений Для формування складного виразу, доцільно використати Построитель выражений. Він дозволяє вибрати необхідні імена полів з таблиць, запитів, форм, знаки операцій, функції. Викличемо Построитель выражений, вибравши Построить у контекстному меню (курсор миші повинен бути встановлений на рядку Поле, якеобчислюється). У лівій частині вікна Построитель выражений (рис. 7.10) виберемо таблицю ПРЕДМЕТ. Праворуч відобразиться список її полів. Послідовно виберемо потрібні поля, додаючи їх подвійним клацанням миші, знаки операцій вводяться з клавіатури. При цьому у верхній частині вікна сформується вираз. Збережемо запит під ім'ям «Різниця годин по предмету». Збережений запит можна виконати, виділивши запит у вікні Все объекты Access, натисканням правої кнопки миші і вибравши кнопку Открыть. Побудований запит може бути використаний для перевірки правильності заповнення поля ГОДИНИ в таблиці ПРЕДМЕТ. Використання групових операцій у запитах Призначення групових операцій Групові операції дозволяють виділити групи записів з однаковими значеннями в зазначених полях і використати для цих груп одну із статистичних функцій. В Access передбачено дев'ять статистичних функцій:
Результат запиту з використанням групових операцій містить по одному запису для кожної групи. У запит включаються поля, по яких провадиться угруповання, і поля, для яких виконуються групові функції. Порядок створення запиту з використанням групових операцій Для створення запиту з використанням групових операцій формується запит на вибірку. У бланк запиту включаються поля, по яких треба зробити групування, і поля, по яких треба зробити статистичні обчислення. Виконаєте команду Создать/Конструктор запросов і на панелі інструментів конструктора запитів натисніть кнопку Итоги. Для групових обчислень по деякому полю потрібно замінити в ньому слово Группировка на потрібну статистичну функцію. Вибрати потрібну функцію можна через розгорнутий список. Конструювання однотабличного запиту із груповою операцією Розглянемо технологію конструювання однотабличного запиту із груповою операцією на прикладі таблиці СТУДЕНТ. Запит з функцією Count Визначимо фактичне число студентів у групі. Створимо запит на вибірку з таблиці СТУДЕНТ. Зі списку таблиці СТУДЕНТ перетягнемо у бланк запиту поле НГ (номер групи). У такий спосіб ми вкажемо, що по цьому полю повинно провадитися групування. Перетягнемо у бланк запиту поле НС, по якому буде обчислюватися функція Count для підрахунку числа студентів у групі. Натиснемо кнопку Итоги. Замінимо слово " Группировка " у стовпці НС на функцію Count. Для цього викличемо список і виберемо цю функцію. Бланк запиту прийме вид, показаний на рис. 7.11. Результат запиту показаний на рис. 7.12. Підпис поля "Count_HC" можна замінити на "Фактичне число студентів". Для введення цього підпису у бланку запиту встановимо на поле НС курсор миші і натиснемо праву кнопку. У контекстному меню виберемо команду Свойства . У Окне свойств наберемо у рядку Подпись "Фактична кількість студентів". Таблиця результату після виконання показана на рис. 7.13. Збережемо запит на вибірку під ім'ям "Число студентів у групах". Запит з функцією Avg Підрахуємо середній прохідний бал у групі. Сформуємо запит на вибірку для таблиці СТУДЕНТ із функцією Avg для поля ПБАЛ (прохідний бал студента). У бланку запиту заповнимо поля, як показано на рис. 7.14. Для обмеження точності результату двома знаками виберемо у Окне свойств у рядку Формат поля значення Фиксированный. Результат виконання запиту представлений на рис. 7.15. Збережемо цей запит під ім'ям "Середній прохідний бал групи" Запит з декількома груповими функціями Виконаємо розрахунок числа студентів і середнього прохідного бала в групі в одному запиті. Це можливо, тому що групи записів в обох випадках формуються однаково (рис. 7.16). Збережемо цей запит під ім'ям "Число студентів і середній ПБАЛ групи". Завдання умов відбору в запитах із груповими операціями У запит із груповими операціями можна включати поля для завдання умов відбору записів з таблиць. Підрахуємо число студентів у кожній із груп з прохідним балом більше 4,5. Для цього в запит Число студентів і середній ПБАЛ групи вдруге включимо поле ПБАЛ і у рядку Групповые операции замінимо значення Группировка на значення Условие, вибравши його зі списку. Після цього введемо в рядок Условие отбора ">4,5" (рис.7.17). Зверніть увагу, що середній бал у цьому запиті також обчислюється тільки для студентів з прохідним балом, що перевершує 4,5. Умова відбору, задана у полі, по якому проводиться угруповання, або в полі, де записана функція угруповання, дозволяє відібрати тільки потрібні групи записів, наприклад, групи студентів із заданим номером або із заданим середнім прохідним балом.
Конструювання запиту на створення таблиці Запит на створення таблиці використається для збереження результату запиту. Цей вид запиту заснований на запиті на вибірку, але, на відміну від нього, зберігає таблицю з результатами запиту. Необхідність у збереженні результатів запиту виникає, наприклад, коли неможливо побудувати запит безпосередньо на іншому запиті. До цього випадку відноситься побудова запиту на відновлення полів на основі запиту з операцією групування. Сформуємо запит на створення таблиці на прикладі раніше отриманого запиту на вибірку з груповими обчисленнями Число студентів у групах (див. рис. 7.11-7.13). В області навігації викличемо названий запит у режимі конструктора запитів. Перетворимо цей запит у запит на створення таблиці, вибравши тип запиту на панелі конструктора Создание таблицы. У вікні Создание таблицы введемо ім'я створюваної таблиці "Кількість студентів" (рис. 7.18). Для того, щоб переглянути, які записи будуть поміщені у нову таблицю, клацніть по кнопці панелі інструментів Выполнить. Виконайте запит, щоб таблиця КІЛЬКІСТЬ СТУДЕНТІВ була збережена у базі даних. Тепер цю таблицю можна побачити в списку таблиць вікна БД.
Конструювання запиту на відновлення Відновлення полів значеннями, розрахованими з використанням групових операцій Розглянемо технологію створення запиту на відновлення на прикладі відновлення поля КІЛ (кількість студентів групи в таблиці ГРУПА). Кількість студентів у групах раніше було підраховано в запиті на вибірку Кількість студентів у групах (див. рис. 7.11-7.13) з використанням статистичної функції Count. Запит на відновлення безпосередньо на такому запиті побудувати не можна. Тому використаємо для відновлення не сам запит, а таблицю КІЛЬКІСТЬ СТУДЕНТІВ, отриману по запиті на створення таблиці в попередньому пункті. Для формування запиту на відновлення спочатку створимо запит на вибірку на основі двох таблиць: обновлюваної таблиці ГРУПА і таблиці КІЛЬКІСТЬ СТУДЕНТІВ, яка містить дані для відновлення. У підсхемі даних запиту автоматично встановлюється зв'язок цих таблиць по полю з ім'ям НГ. Для перетворення запиту на вибірку в запит на відновлення (рис. 7.19) виберемо на панелі конструктора тип запиту Обновление. Заповнимо бланк запиту. Перетягнемо обновлюване поле КІЛ з списку таблиці ГРУПА. У рядку Обновление введемо ім'я поля "Фактична кількість студентів" (таблиці КІЛЬКІСТЬ СТУДЕНТІВ), з якого вибираються значення для відновлення. Ім'я поля вводиться у квадратних дужках. Запит можна виконати, не виходячи з режиму конструктора. Результат обновлюваного поля КІЛ можна переглянути в режимі таблиці до і після виконання запиту. Для наступного використання підготовленого запиту збережемо його під ім'ям "Оновлення ГРУПА_КІЛ". Використання виразів у запиті на відновлення Розглянемо формування запиту на відновлення з використанням виразів на прикладі заповнення поля ГОДИНИ для лекційних занять у таблиці НАВЧАННЯ. Нехай поле ГОДИНИ повинно обновлятися даними, що обчислюється на основі полів ЛЕК (ГОДИНИ лекцій) і ЧС (число семестрів) з таблиці ПРЕДМЕТ. Розрахункове число годин по лекціях визначимо по формулі ЛЕК/ЧС. Відповідно до завдання у записах лекційних занять таблиці НАВЧАННЯ необхідно обновити поле ГОДИНИ розрахунковим числом годин. Записи про лекційні заняття можна вибрати за значенням поля ВИДЗ цієї таблиці. Дані для розрахунку середнього числа годин знаходяться у таблиці ПРЕДМЕТ. У такий спосіб запит повинен будуватися на основі таблиць НАВЧАННЯ і ПРЕДМЕТ. Створимо спочатку запит на вибірку на основі таблиць НАВЧАННЯ і ПРЕДМЕТ. Потім перетворимо його в запит на відновлення, натиснувши відповідну кнопку панелі інструментів. Включимо у бланк запиту обновлюване поле ГОДИНИ таблиці НАВЧАННЯ. У рядку Обновление для цього поля введемо вираз [ЛЕК]/[ЧС]. Для відбору в таблиці НАВЧАННЯ обновлюваних записів про лекційні заняття у бланк запиту включимо поле ВИДЗ і вкажемо у поле Условие отбора значення "лек". Остаточно сформований запит показаний на рис.7.20. Виконаємо запит, натиснувши кнопку Выполнить. У діалоговому вікні з'явиться повідомлення про число обновлюваних записів. Щоб бачити результати відновлення в таблиці НАВЧАННЯ, відкрийте її одночасно із запитом.
Конструювання перехресного запиту Перехресний запит дозволяє одержати дані у формі, подібній до електронної таблиці, за допомогою майстра. Однак такий запит нескладно побудувати повністю в режимі конструктора. Побудова запиту починається як звичайно, наприклад, вибрати вкладку Создание/ Конструктор запросов у вікні бази даних. У вікні конструктора починається створення запита на вибірку. У будь-який момент запит на вибірку може бути перетворений у перехресний запит. Для цього треба вибрати тип запиту Перекрестный на панелі. Скористаємося як приклад перехресним запитом Вивчення предметів у групах, отриманим майстром перехресних запитів. Для більшої інформативності отриманої перехресної таблиці замінимо в ній коди предметів їхніми найменуваннями. Полю, що містить результат підсумовування по рядках, дамо користувальницьке ім'я "Усього годин". Для виконання перерахованих перетворень відкриємо перехресний запит Вивчення предметів у групах в режимі конструктора. Поле НП (найменування предмету) розміщено в таблиці ПРЕДМЕТ, тому її потрібно додати до розроблювального запиту. Для цього, перебуваючи у вікні конструктора, натиснемо кнопку Отобразить таблицу. Тепер схема даних запиту складається з таблиць ПРЕДМЕТ і НАВЧАННЯ, зв'язаних по полю КП (код предмета) відношенням один-до-багатьох (рис. 7.21). Замінимо у бланку запиту поле КП на поле НП таблиці ПРЕДМЕТ. Для цього клацнемо правою кнопкою миші на області відображення полів таблиць і виберемо Имена таблиц, щоб одержати у бланку інформацію про приналежність поля до таблиці. Далі у поле КП у рядку Имя таблицы натиснемо кнопку списку і виберемо поле ПРЕДМЕТ, а в рядку Поле - поле НП. Для зміни підпису поля ПІДСУМКОВЕ ЗНАЧЕННЯ, що містить суму по рядках, клацнемо правою кнопкою миші, перебуваючи в зоні цього поля. У контекстному меню виберемо пункт Свойства. У вікні Свойства введемо у рядок Подпись "Усього годин". Остаточно сформований перехресний запит наведений на рис. Результат виконання отриманого перехресного запиту наведений на рис. 7.22. Рішення завдань на основі декількох запитів Вище розглядалися приклади простих завдань, рішення яких здійснювалися виконанням одного запиту. У цьому випадку запитом реалізується весь алгоритм формування результату на основі вхідних даних з таблиць бази і параметрів завдання. Для опису алгоритму завдань, реалізованих одним запитом, звичайно досить опису дій за допомогою слів. Доцільно також використати функціонально - технологічну схему, на якій указуються вхідні і вихідні таблиці даних. Більш складні завдання вимагають послідовного виконання декількох запитів. Кожен із запитів має свої вхідні і вихідні дані. У найпростішому випадку вихідні дані попереднього запиту є вхідними для наступного побудованого на ньому запиту, і, тільки виконавши останній запит у ланцюжку запитів побудованих один на одному, ви ініціюєте послідовне виконання всіх запитів ланцюжка і повне рішення завдання. Функціонально-технологічна схема завдання, розв'язуваного за допомогою двох послідовно виконаних запитів, у загальному виді наведена на рис. 7.23. Запити в Access є потужними засобами рішення різних завдань. При цьому можлива побудова складних запитів, у тому числі побудованих на інших запитах. Нижче розглядається побудова таких запитів, а також їх реалізація. Побудова запиту на основі іншого запиту Виконаємо аналіз оцінок, отриманих студентами по різних предметах. Наприклад, підрахуємо число оцінок (2,3,4,5) по кожному із предметів. Створимо спочатку багатотабличний запит на вибірку на основі таблиць СТУДЕНТ, УСПІШНІСТЬ, ПРЕДМЕТ, ВИКЛАДАЧІ, що формує відомості про оцінки, отриманих студентами з різних предметах. Для цього в режимі конструктора створимо схему даних запиту і бланк, як показано на рис.7.24. Збережемо цей запит з ім'ям "Оцінки". У результаті виконання цього запиту буде отримана таблиця, джерелом записів якої є таблиця УСПІШНІСТЬ, а дані вибираються з таблиць: ПРЕДМЕТ, СТУДЕНТ, ВИКЛАДАЧІ. Таким чином, кожен рядок результату буде містити інформацію про одну оцінку, отриманої студентом по вказаному в рядку предмету. Число рядків у таблиці запиту буде дорівнює числу рядків у таблиці УСПІШНІСТЬ. Для підрахунку числа різних оцінок (2,3,4,5) по кожному з предметів на основі цього запиту створимо новий запит - Кількість оцінок. При створенні нового запиту у вікні Отобразить таблицу/Добавление таблицы на вкладці Запросы виберемо з списку запит Оцінки. Заповнимо бланк запиту, як показано на рис.7.25. Результат виконання запиту Кількість оцінок наведене на рис. 7.26, де в стовпці Выражение 1 відображена кількість оцінок, отриманих по кожному предмету. Зауваження. Немає необхідності попередньо виконувати запит (Оцінки), на основі якого виконується інший запит (Кількість оцінок). Виконання вкладеного запиту ініціюється системою при виконанні запиту, побудованого на ньому. Рішення завдання, що вимагає виконання декількох запитів із зберенням проміжних результатів Нехай необхідно визначити середнє навантаження викладача кафедри у поточному семестрі. Для цього необхідно підрахувати число викладачів кафедри, потім загальна кількість годин занять, проведених кафедрою, і завершити рішення завдання розрахунком середнього навантаження викладача. Перший запит. Створимо перший запит на вибірку, у якому по таблиці ВИКЛАДАЧІ за допомогою функції Count підрахуємо число викладачів по кафедрах. Збережемо запит під ім'ям "Число викладачів кафедри". Другий запит. Підготуємо другий запит на вибірку для підрахунку загального числа годин занять, проведених кожною кафедрою. Цей запит побудуємо на базі таблиць ВИКЛАДАЧІ, НАВЧАННЯ, КАФЕДРА і запиту Число викладачів кафедри (рис. 7.25). Таблиці ВИКЛАДАЧІ і НАВЧАННЯ потрібні для підсумовування числа годин занять, проведених викладачами кожної кафедри. Таблиця КАФЕДРА необхідна для включення у результат найменування кафедри, а запит Число викладачів кафедри - для включення у результат числа викладачів на кафедрі. Записи цього запиту формуються на основі записів таблиці НАВЧАННЯ, причому число записів до проведення угруповування дорівнює числу записів у цій таблиці. У результаті запиту до кожного запису додається найменування кафедри НКАФ, по якому і відбувається угруповування. Число викладачів кафедри Count_TAБ ніяк не порушує необхідного об'єднання записів у групі, оскільки для кожної кафедри є єдиним. Число записів у таблиці результату запиту дорівнює числу кафедр. У рамках даного запиту не можна відразу обчислити середнє навантаження викладача тому, що число викладачів кафедри є результатом виконання групової операції. Використання результатів виконання запиту із груповою операцією не допускається в полях, що обраховуються. Тому необхідно зберегти результати виконання другого запиту у новій таблиці і на її основі побудувати наступний запит, у якому буде зроблений розрахунок середнього навантаження викладача. Щоб зберегти отримані результати, перетворимо другий запит на вибірку в запит на створення таблиці. Таблиця, що буде створена запитом, дамо ім'я "Навантаження". Запит збережемо під ім'ям " Навантаження на кафедрі" (див. рис.7.27). Другий запит у режимі таблиці наведений на рис. 7.28. Таблицю НАВАНТАЖЕННЯ, збережемо в базі даних, що містить результат рішення цього запиту (рис. 7.29). Третій запит. Для остаточного рішення завдання розрахунку середнього навантаження викладача кафедри створимо на базі таблиці НАВАНТАЖЕННЯ. Третій запит на вибірку з обрахуванням поля. Для створення обрахованого поля, середнє навантаження викладача поставити у рядок Поле порожнього стовпця і введемо вираз [Sum_ГОДИНИ]/[Count_ТАБН]. Третій запит на вибірку на рис. 7.30. У таблиці результату варто змінити заголовок стовпця Выражение1, формований за замовчуванням при обчисленні поля, а формат задати округленим до цілого. Для цього викличемо властивості поля за допомогою контекстного меню. Задамо підпис поля "Середнє навантаження викладача", формат поля визначимо як фіксований, а параметру Число десятичных знаков привласнимо значення "0". Результати виконання запиту після зміни підписів полів у властивостях наведені на рис. 7.31. Процес рішення завдання. Для рішення поставленого завдання необхідно послідовно виконати другий запит - Навантаження на кафедрі (див. рис. 7.25), а потім третій запит - (див. рис. 7.30). Перший запит Число викладачів кафедри виконається автоматично при виконанні запиту Навантаження на кафедрі. Для того щоб автоматизувати рішення завдання, що вимагає виконання декількох запитів, потрібно використати засоби розробки додатка користувача, наприклад, написати макрос. Технологія підготовки макросу, що дозволяє виконати послідовність запитів, розглядається нижче. З повагою ІЦ "KURSOVIKS"! |