Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бд запити.doc
Скачиваний:
10
Добавлен:
09.02.2016
Размер:
184.83 Кб
Скачать

Запити до зв'язаних таблиць

За потреби створити запит до кількох таблиць (або запитів) їх слід вибрати у вікні Добавление таблицы так, як при створенні схеми даних. Вибрані таблиці зображуються у верхній частині Конструктора запитів; якщо між ними є зв'яз­ки, то вони також відображуються. Вибір полів на бланку запиту відбувається так само, як при створенні запиту до однієї таблиці.

Запит 6 Вивести відомості про всі виплати всім співробітникам. У результаті мають міститися поля ПІБ, ДАТА ВИПЛАТИ і СУМА. Вміст бланка запиту показано у таблиці на рис. 6.

Поле

ПІБ

Дата виплати

Сума-

Имя таблицы

Співробітники

Виплати

Виплати

Вывод на зкран

так

так

так

Рис. 6. Бланк запиту 6

Обчислення у запитах

У СУБД АССЕ88 існують два види обчислень у запитах:

  • створення нових обчислювальних полів;

  • обчислення підсумкових значень.

Для створення обчислювального поля потрібно у бланку запиту в рядку Поле ввести конструкцію такого виду:

<Назва._обчислювального_поля> : <Вираз>.

Вираз задає правило, за яким обчислюють значення у створюваному полі. Він може містити знаки математичних операцій, дужки, стандартні функції АССЕ88, імена полів таблиці, до якої створюється запит, взяті у квадратні дужки. Якщо потрібно використати поле іншої таблиці, то вказують таку конструкцію: [ім'я таблиці].[ім'я поля]

Запит 7 Вивести дані про розміри всіх виплат співробітникові Петренку П.П. за останні 60 днів із врахуванням відрахувань у пенсійний фонд (2%). Вміст бланка запиту показано у таблиці на рис. 7.

Поле

ПІБ

Дата виплати

Сума

Пенсійний фонд: CCur([Сума]*0,02)

Имя таблицы

Співробітники

Виплати

Виплати

Вывод на экран

так

так

так

так

Условие отбора

«Петренко П.П.»

>date()-60

Рис. 7. Бланк запиту 7

Результат запиту показано на рис. 8.

Рис. 8. Результат виконання запиту 7

Зауваження. Функція CCur переводить значення числового типу в значення грошового типу, додаючи 2 знаки після коми і позначення грошової одиниці. Без використання цієї функції значення у полі Пенсійний фонд виглядають як звичайні цілі числа.

Для обчислення підсумкових значень необхідно внести у бланк запиту рядок Групповая операция натисненням однойменної кнопки на стандартній панелі інструментів. СУБД АССЕ88 дає змогу виконувати такі групові операції над даними:

  • Группировка операція призначена для групування даних у тому полі, в якому вона встановлена (відповідні записи виводяться підряд);

  • Sum — знаходження суми значень у відповідному полі;

  • Avg (Average) — знаходження середнього арифметичного;

  • Мin — знаходження мінімального значення у полі;

  • Мах — знаходження максимального значення у полі;

  • Count —знаходження кількості записів;

  • StDev —знаходження середньоквадратичного відхилення;

  • Va r — знаходження дисперсії;

  • First — знаходження першого значення;

  • Last — знаходження останнього значення.

Запит 8 Отримати загальну суму виплат, зроблених кожному співробітникові. У від­повіді вивести поля ПІБ і ЗАГАЛЬНА СУМА. Вміст бланка запиту показано у таблиці на рис. 9.

Поле

Код

ПІБ

Сума

Имя таблицы

Співробітники

Співробітники

Виплати

Групповая операция

Группировка

Группировка

Sum

Вывод на экран

так

так

Условие отбора

Рис. 9. Бланк запиту 8

При виконанні таких запитів ACCESS автоматично присвоює ім'я підсум­ковому полю за правилом Назва_групової_операції_Назва_поля_таблиці (у да­ному разі: Sum_Cyмa). Щоб присвоїти полю бажане ім'я, потрібно у бланку запиту встановити вказівник миші на назві поля, в якому обчислюється підсум­кове значення (у даному разі — Сума), викликати контекстне меню поля і ви­брати команду Свойства. У рядку Подпись необхідно вказати потрібне ім'я поля. При перегляді результату запиту можна побачити нову назву підсумко­вого поля.

Запит 9 Отримати середнє значення виплат, зроблених кожному співробітникові протягом 2001 р. У відповіді вивести поля ПІБ та СЕРЕДНЯ ВИПЛАТА ЗА 2001 РІК. Вміст бланка запиту показано у таблиці на рис. 10.

Зауваження. Якщо при виконанні групових операцій на поле встановлюється певна умова (у даному разі таке поле Дата виплати), то в рядку бланка Групповая операция для цього поля необхідно встановити значення Условие. Виве дення на екран для такого поля заборонено.

Поле

Код

П1Б

Дата виплати

Сума

Имя таблицы

Співробіт­ники

Співробіт­ники

Виплати

Виплати

Групповая операция

Групппровка

Группировка

Условие

Avg

Вывод на экран

так

Так

Условие отбора

Like «*01»

Рис. 10. Бланк запиту 9

Доцільно поекспериментувати з розглянутим запитом, змінивши у полі ДАТА ВИПЛАТИ значення Условие на Группировка і встановивши для цього поля виведення на екран.

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

Запит 10 Обрахувати загальний фонд заробітної плати та розмір середньої виплат за 2001 р. У результаті вивести поля ЗАГАЛЬНА СУМА ВИПЛАТ і СЕРЕДНЯ ВИПЛАТА.

Вміст бланка запиту показано у таблиці на рис. 11. Результат запиту містити^ один запис із двох полів, назви яких вказані у властивостях підсумкових полів

Поле

Дата виплати

Сума

Сума

Имя таблицы

Виплати

Виплати

Виплати ]

Групповая операция

Условие

Sum

Avg

Вывод на экран

так

так

Условие отбора

Like «*01»

Рис. 11. Бланк запиту 10

Слід зазначити, що у бланку запиту нема поля, що ідентифікує кожний окремий запис (КОД). За його наявності (навіть без виведення на екран) Під­сумкові значення обчислювалися би не для всієї таблиці, а для кожного спів­робітника окремо.

Запити з параметрами

СУБД ACCESS дає змогу формувати умови відбору даних у процесі виг­нання запиту. Така «інтерактивність» запитів реалізується завдяки використанню параметрів. Щоб створити такий запит, потрібно у бланку запиту в рядку Условие отбора вказати не константу певного типу, з якою будуть порівнюва­тись дані, а пояснювальний текст в квадратних дужках. Синтаксис цього тексту довільний, а його зміст призначений для повідомлення користувачеві, яке зна­чення для відбору даних він має ввести. При виконанні такого запиту на екран виводиться вікно з назвою «Введите значение параметра», в якому подано пояснювальний текст і розміщено поле для введення значення параметра. Після його введення можна побачити результат запиту.

Запит 11 Сформувати перелік співробітників (ПІБ і СТАЖ), стаж роботи яких не менший за той, який вказав користувач. Вміст бланка запиту показано у таблиці на рис. 12.

Поле

ПІБ

Стаж

Имя таблицы

Співробітники

Співробітники

Вывод на экран

так

так

Условие отбора

>=[Введіть мінімальний стаж ]

Рис. 12. Бланк запиту 11

Можна вказати в бланку запиту кілька параметрів у різних полях. Тоді при виконанні запиту послідовно з'являтимуться діалогові вікна для вказування всіх названих параметрів.