
Перехресні запити в базах даних Access
Вступ
Одним із найважливіших об’єктів бази даних Access є запит. З їх допомогою можна створювати, обновлювати, знищувати таблиці, отримувати відповіді на найрізноманітніші питання. Вони дозволяють з’єднати в одне ціле дані не лише з різних таблиць, а навіть із інших баз даних.
За допомогою багатотабличних запитів можна отримувати відповіді на такі запитання, на які не можливо знайти відповіді, переглядаючи кожну таблицю окремо. Наприклад, можна обчислити записи, що повторюються або, навпаки, відсутні, зводити їх в єдине ціле (звіти), знаходити записи, що присутні в одній таблиці, але відсутні в іншій, і багато іншого.
Будь-який запит в Access може бути використаний поряд із звичайними таблицями як база для іншого запиту. Таким чином, механізм запитів Access дозволяє вільно комбінувати таблиці і запити для виконання складних операцій над даними.
Дуже часто запити використовуються для того, щоб поєднати в одну таблицю на екрані дані, які реально розміщенні в різних таблицях бази даних. Таблиці в такому запиті можуть пов’язуватись декількома способами – з використанням внутрішніх, зовнішніх, рекурсивних з’єднань і з’єднань за співвідношенням. Ці типи з’єднань дозволяють вилучати із бази даних найрізноманітнішу інформацію.
Всі ці операції можна виконувати за допомогою складних запитів, якими є:
запит на вибірку даних із декількох таблиць;
перехресні запити;
запити з параметрами;
запити на оновлення таблиць;
запити на додавання даних;
запити на знищення записів.
Далі розглядатимемо перехресні запити.
Іноді буває необхідно впорядкувати інформацію в базі даних за двома і більше
Перехресні запити
Перехресні запити – це запити, у яких відбувається статистична обробка даних. Результати обробки виводяться у вигляді таблиці, що дуже схожа на зведену таблицю Excel. Перехресні запити мають наступні переваги:
1. Можливість обробки значного обсягу даних і виводу їх у форматі, що дуже добре підходить для автоматичного створення графіків і діаграм.
2. Простота і швидкість розробки складних запитів з декількома рівнями деталізації
Перехресні запити мають один недолік – не можна сортувати таблицю результатів за значеннями, що міститься в стовпцях, тому що в переважній більшості випадків одночасне впорядкування даних у стовпцях по всіх рядках неможливе.
Однак можна задати сортування по зростанню чи по спаданню, або відсутність впорядкування для заголовків рядків. Крім того, у перехресному запиті можна:
1) Вказати поле, що є заголовком рядка.
2) Задати поле чи кілька полів, що є заголовками стовпців, а також умова, що визначає значення в стовпцях.
3) Вказати місце розміщення даних у таблиці.
Ассеs SQL пропонує для позначення перехресного запиту використовувати ключове слово transform(transform не є зарезервованим словом ANSl SQL.
Перехресні запити зручні для представлення даних у вигляді таблиці, однак на них іноді досить складно будувати звіти. Як приклад сформуємо два перехресних запити до бази даних "Борею" для виводу щомісячних продажів товару (по його типові) і щоквартальних продажів товару (по його типові). Подібні таблиці, що містять підсумки, що підводяться через визначені проміжки часу, наприклад через кожен чи місяць квартал, звичайно використовуються як дані для графіків.
Створення перехресних запитів за допомогою Майстра перехресних запитів.
Створення перехресного запиту за допомогою Майстра перехресних запитів здійснюється таким чином:
1. В вікні бази даних слід вибрати пункт Запросы, клацнути по кнопці Создать.
2. В діалоговому вікні Новый запрос вибрати із списку значення Перекресный запрос; тим самим буде запущено Майстра, який проведе через всю послідовність дій по створенню перехресних запитів.
3. У першому діалоговому вікні Майстра перехресних запитів вибрати таблицю чи запит, який містить поля, присутні в перехресному запиті.
4. У другому діалоговому вікні вибрати від одного до трьох полів, які будуть заголовками рядків.
5. В третьому діалоговому вікні вибрати поле, значення якого будуть використовуватись як заголовки стовпців.
6. В четвертому діалоговому вікні вибрати поле із узагальнюючою інформацією, функцію для проведення обчислень.
7. В п’ятому і останньому діалоговому вікні ввети ім’я запиту(або залишити ім’я за замовчуванням) і вирішити чи відкривати новий запит з початку в режимі таблиці чи коструктора. Клацнути по кнопці Готово і Майстер створить запит.
Використання виразів для створення обчислювальних полів.
Обчислювальні поля запиту відображають дані, розраховані на основі значень інших полів з того ж рядка запиту. В описаній нижче покроковій процедурі створення перехресного запиту показано, як можна користуватися виразами для створення нових полів, що обчислюються, у запитах.
Обчислювальні поля можна вводити не тільки в перехресних запитах, але й у звичайних запитах на вибірку.
Отже, ми будемо створювати перехресний запит, у якому в рядках виводяться товари, а в стовпцях – відповідні їм щомісячні обсяги продажів. Для цього:
1. Створіть новий запит у режимі Конструктора і додайте в нього таблиці "Товари" (Products), "Замовлення" (Orders) і "Замовлене" (Order Details).
2. Перетягніть поля "КодТовара" (ProductID) і "Марка" (ProductName) таблиці "Товари", а потім поле "ДатаРазмещения" (OrderedDate) таблиці "Замовлення", у перші три стовпці бланка запиту.
3. Виберіть команду меню Запит, Перехресний (Query, Crosstab Query). Заголовок вікна запиту Запит1: на вибір (Select Query: Queryl) зміниться на Запит1: перехресний запит (Crosstab Query: Queryl). Крім того, у бланк запиту буде доданий рядок Перехресна таблиця (Crosstab) і рядок Групова операція (Total), у якій у всіх стовпцях автоматично вводиться операція Групування(Group By).
4. Виберіть у списку чарунки Перехресна таблиця стовпця "КодТовара" значення Заголовки рядків (Row Heading). Виконайте те ж саме для стовпця "Марка". Ці стовпці є необхідними заголовками рядків перехресної таблиці.
5. Виберіть у списку чарунки Групова операція стовпця "ДатаРазмещения" значення Умова. В чарунці Умова вибору цього стовпця введіть вираз<=#31.12.97#And>=#01.01.97# для виводу в перехресній таблиці даних за 1997 рік.
Встановіть курсор в чарунці Поле наступного (порожнього) стовпця і введіть наступний вираз:
Обсяг продажів: Sum([Кількість]*[Замовлена].[Ціна])
Поле, що ми в такий спосіб створили, обчислюється. Його значення обчислюється за допомогою описаного виразу, а назву поля ми визначили як "Обсяг продажів". У виразі використовуються поля з таблиць, що включені в запит, однак, зверніть увагу, що самі ці поля в результат запиту не включені. Це означає, що при створенні що обчислювальні поля у вирази можна включати посилання не тільки на поля самого запиту, але і на поля, що не включаються в результат запиту. Важливо, щоб вони були у вихідних таблицях. При посиланні на поле "Ціна" у виразі ми вказали ще ім'я таблиці "Замовлене", а при посиланні на поле "Кількість" не вказували. Вказати ім'я таблиці довелося тому, що поле з ім'ям "Ціна" є присутнім і в таблиці "Товари" і в таблиці "Замовлене". Якщо не вказати у виразі імені таблиці, то Access не може визначити, з якої таблиці брати значення, тому видасть повідомлення про помилку, як це представлено на малюнку 1.
Виберіть в чарунці Групова операція того ж стовпця значення Виразу(Expression), а потім в чарунці Перехресна таблиця значення Значення (Value). У стовпці "Обсяг продажів" обчислюється загальний обсяг замовлень на кожен товар, що буде підставлятися в осередки результуючої таблиці запиту. Посилання на таблицю "Замовлені" обов'язкова, інакше буде видане повідомлення про помилку Неоднозначне посилання на поле (Ambiguous field reference).
Встановіть курсор в чарунці Поле наступного (порожнього) стовпця і введіть Вираз format [Дата Розміщення]; "mmm"). Функція Format() повертає три перші букви місяця від значення дати в стовпці "ДатаРазмешения". За допомогою цієї функції ми створили ще одне поле, що обчислюється, у запиті, причому після закінчення введення цього виразу Access автоматично створює ім'я цього поля "Вираз" (Exprl). Так відбувається кожен раз, коли ми не визначаємо ім'я обчислювального поля. Виберіть зі списку в чарунці Перехресна таблиця цього стовпця значення Заголовки стовпців (Column Heading) (мал.2). Це означає, що даний стовпець запиту буде перетворений у процесі виконання запиту в рядок, що містить заголовки стовпців результуючої таблиці.
8. Натисніть кнопку Запуск. З'явиться результуюча множину записів, представлена на мал. 3.
Варто звернути увагу, що виведена перехресна таблиця має один недолік: розташування стовпців визначається алфавітним порядком їхніх заголовків, а не хронологічною послідовністю. Цієї неприємності уникнути. Для цього потрібно задати порядок сортування заголовків стовпців.
Використання фіксованих заголовків стовпців у перехресних запитах
Щоб у побудованому запиті вивести стовпці в порядку календарної послідовності місяців, необхідно задати фіксовані заголовки стовпців:
1. Перейдіть в режим Конструктора і виведіть властивості запиту. У бланку властивостей виводиться властивість Заголовки стовпців (Column Headings), що міститься тільки в перехресних запитах.
2.Введіть короткі назви кожного з місяців року в поле властивості Заголовки стовпців (мал. 4). Необхідно відтворити назви без помилок, у противному випадку дані для неправильно заданих місяців не відображаються. Скорочення потрібно взяти в лапки і розділяти назви крапками з комами. Пробіли не потрібні. По завершенні введення всіх 12 місяців закрийте бланк властивостей.
3. Перейдіть у режим перегляду SQL (мал. 5). Зверніть увагу на використання виразів у полях, що обчислюються, і критерії запиту, а також на використання ключових слів transform і pivot.
Інструкція SQL містить операцію transform, у якій визначають дані, що містяться в таблиці. В операції pivot задаються заголовки стовпців. Після ключового слова in вказуються, якщо є, фіксовані назви стовпців.
У ANSI SQL слова transform і pivot не є зарезервованими словами, а ключове слово in інтерпретується no-різному в Access і ANSI SQL.
4. Натисніть кнопку Запуск для висновку результатів запиту.
Тепер заголовки стовпців перехресної таблиці відповідають календарній послідовності (мал. 6).
Якщо якийсь стовпець відсутній у перехресній таблиці, перевірте спочатку, чи правильно ви ввели заголовки стовпців. Вони повинні точно співпадати з тими значеннями, що повертає функція Format про ().
5.Виберіть команду Файл, Зберегти як і збережіть запит під ім'ям "Щомісячний виторг від продажів у 1997 році".
Зміна рівня деталізації в запиті
Для створення, зручного для аналізу представлення чи наочного графіка можна скоротити число рядків і стовпців у результатах побудованого запиту. Для цього можна створити перехресний запит, що виводить щоквартальний виторг від продажів по типах товарів. Щоб створити такий запит:
1. Додайте у вже створений запит таблицю "Типи".
2. Замініть стовпці "КодТовара" і "Марка" у запиті стовпцями "КодТипу" і "Категорія" таблиці "Типи". Для цього спочатку знищіть зайві стовпці, а потім перенесіть потрібні стовпці в бланк замовлення. В чарунках Перехресна таблиця, обох стовпців виберіть значення Заголовки рядків (мал. 7).
3. Змініть вираз в стовпці "Вираз" на Format([ДатаРазмещение];"""Квартал ""q"), що визначає заголовки стовпців "Квартал 1", ..., "Квартал 4". Кілька лапок потрібно для вказівки того, що слово квартал і пробіл розглядаються як рядок, a q – як формат.
4.Відкрийте бланк властивостей і очистіть вміст властивостей Заголовки стовпців, а потім закрийте бланк. Якщо не знищити фіксовані заголовки, то в перехресній таблиці не буде даних. Щоб прискорити роботу запиту, можна задати в поле властивості Заголовки стовпців чотири фіксованих назви: "Квартал 1, ..., "Квартал 4".
5. Натисніть кнопку Запуск для виведення результатів запиту (мал. 8).
Приклад. Відкрити базу даних “Спортивна гімнастика”. Вивести на екран поля “Прізвище”, “Перекладина”, “Кільця”, “Кінь” для спортсменів України.
Висновки.
Запити є основою для більшості форм і звітів, що розробляються в Access. У багатьох випадках прості запити розробляються спеціально ля створення одного звіту чи форми. Запити, які розглянуто у роботі дозволяють не лише відбирати дані у складній системі взаємопов’язаних таблиць, але й виконувати різноманітні зміни у цих таблицях, аналізувати дані різними способами, автоматично сортувати і фільтрувати дані.
Наприклад, в одному із розділів роботи, присвяченій перехресним запитам, описано створення запиту, який виводить дані для аналізу тенденції розвитку, на що витрачається менше п’яти хвилин. Порівнюючи Access з іншими системами, можна відмітити, що ця операція займає в десять разів менше часу, ніж створення еквівалентної електронної таблиці. Хоча за допомогою середовища Excel Сводная таблица. Заповнення перехресних таблиць простіше, Access все ж таки виграє, коли необхідно опрацювати велику кількість записів.
Варіант 1.
1. Відкрити базу даних “Спортсмен”.
2. Вивести на екран поля “Прізвище” і “Країна” для спортсменів з України, Франції і Росії.
Варіант 2.
1. Відкрити базу даних “Спортсмен”.
2. Вивести на екран поля “Прізвище”, “Країна” і “Вид спорту” для спортсменів що займаються плаванням і боксом.
Варіант 3.
1. Відкрити базу даних “Абітурієнт”.
2. Вивести на екран поля “Прізвище”, “Ім’я”, “Стать”, “Факультет” і “Дата народження” для всіх абітурієнтів біологічного факультету, які закінчили школу №6.
Варіант 4.
1. Відкрити базу даних “Абітурієнт”.
2. Вивести на екран поля “Прізвище”, “Ім’я”, “Факультет” і “Дата народження” для абітурієнтів фізико-математичного факультету, які народилися у 1981 році.
Варіант 5.
1. Відкрити базу даних “Абітурієнт”.
2. Вивести на екран поля “Прізвище”, “Ім’я”, “Стать”, “Факультет” і “Школа” для всіх дівчат-абітурієнтів хімічного факультету.
Варіант 6.
1. Відкрити базу даних “Відеотека”.
2. Вивести на екран поля “Фільм”, “Країна” і “Час” для бойовиків, що тривають від 90 до 120 хвилин.
Варіант 7.
1. Відкрити базу даних “Відеотека”.
2. Вивести на екран поля “Фільм”, “Країна” і “Жанр” для бойовиків, знятих у США і Росії.
Варіант 8.
1. Відкрити базу даних “Країни світу”.
2. Вивести на екран поля “Столиця” і “Країна” для країн, що знаходяться у Європі.
Варіант 9.
1. Відкрити базу даних “Країни світу”.
2. Вивести на екран поля “Столиця” “Частина світу” і “Населення” для країн, населення яких складає більше 50 тис. чоловік.
Варіант 10.
1. Відкрити базу даних “Країни світу”.
2. Вивести на екран поля “Столиця” “Країна” і “Площа” для країн, які займають площу меншу 1000 км2.
Варіант 11.
1. Відрити базу даних “Підписка”.
2. Вивести на екран поля “Адреса” і “Тип видання”, для всіх хто виписує газету “Зірка”.
Варіант 12.
1. Відрити базу даних “Підписка”.
2. Вивести на екран “Прізвище”, “Індекс видання”, “З якого” і “По яке”, для всіх, хто підписався на журнал “Сім’я” у 1998 році.