Міністерство освіти і науки України
Національний університет "Львівська політехніка"
EMBED Word.Picture.6
“Створення простих запитів на вибірку”
Методичні вказівки до лабораторного заняття з дисципліни
“Бази даних в інформаційно-комп'ютерних технологіях”
для студентів базового напрямку 6.091 “Електронні апарати”
Затверджено на засіданні кафедри ЕЗІКТ
Протокол № 2 від 12 жовтня 2009 р.
Львів 2009
Створення простих запитів на вибірку. Методичні вказівки до лабораторного заняття з дисципліни "Бази даних в інформаційно-комп'ютерних технологіях” для студентів базового напрямку 6.091 “Електронні апарати”/ Укл. Л.К.Гліненко, Є.І.Яковенко.-Львів; Вид-во Нац. ун-ту "Львівська політехика" , 2009. - 16 с.
Укладач: Л.К.Гліненко, канд. техн. наук, доц.
Укладачі: Л.К.Гліненко, канд. техн. наук, доц.
Є.І.Яковенко, канд. техн. наук, доц.
Відповідальний за випуск – Т.А.Смердова , канд. техн. наук, доц.
Рецензенти: В.І.Лозинський, канд. техн. наук, доц.
Б.С.Вус, канд. техн. наук, доц.
Створення простих запитів на вибірку
1. Мета роботи
Одержання навичок роботи зі створення запитів
2. Теми для попереднього вивчення
Призначення запитів, типи запитів, створення запитів на вибірку з однієї чи декількох таблиць, типи з'єднань у запитах; типи запитів на вибірку і технологія їхньої розробки.
2. Стислі теоретичні відомості
Запити – це об'єкти Microsoft Access, які використовуються для перегляду, аналізу і зміни даних в одній чи декількох таблицях. Запит не містить даних, але дозволяє вибирати дані з таблиць і виконувати над ними ряд операцій.
У Microsoft Access існує кілька видів запитів:
запити до сервера, що використовуються для вибірки даних із сервера;
запити на автопідстановку, що автоматично заповнюють поля для нового запису;
запити на вибірку, що виконують вибірку даних з таблиць;
запити на зміну, що дають можливість модифікувати дані в таблицях (у тому числі видаляти, обновляти і додавати записи);
запити на створення таблиці, що створюють нову таблицю на основі даних однієї чи декількох існуючих таблиць;
інші типи запитів.
2.1. Створення простого запиту за допомогою Майстра запитів (Мастера запросов)
Найпростіше створювати запит за допомогою Майстра запитів (Мастера запросов). Щоб створити простий запит за допомогою Майстра запитів, необхідно:
У вікні бази даних на панелі об'єктів вибрати ярлик Запити (Запросы, Queries).
У списку запитів двічі клацнути лівою кнопкою миші на ярлику Створення запиту за допомогою майстра (Создание запроса с помощью мастера, Create query by using wizard) чи натиснути на кнопку Створити (Создать, New) у вікні бази даних і в діалоговому вікні Новий запит (Новый запрос, New Query), що з'явиться, вибрати Простий запит (Простой запрос, Simple Query Wizard) і натиснути на кнопку (рис. 1).
У вікні Створення простих запитів (Создание простых запросов, Simple Query Wizard) (рис. 1), що з'явиться, у поле зі списком Таблиці і запити (Таблицы и запросы, Tables/Queries) вибрати таблицю чи запит, що будуть служити джерелом даних для створюваного запиту.
За допомогою стрілок вправо і вліво перемістити зі списку Доступні поля (Доступные поля , Available Fields) у список Обрані поля (Выбранные поля, Selected Fields) ті поля, що необхідні в конструйованому запиті. При цьому порядок полів у запиті буде відповідати порядку полів у списку Выбранные поля (Selected Fields). Якщо потрібно включити в запит усі поля, можна скористатися кнопкою з двома стрілками вправо.
Натиснути кнопку Далі (Далее, Next).
Наступне діалогове вікно буде останнім. У ньому потрібно ввести ім'я створюваного запиту у поле Задайте ім'я запиту (Задайте имя запроса, What title do you want to your query?) і вибрати подальші дії: Відкрити запит для перегляду даних (Открыть запрос для просмотра данных, Open the query to view information) чи Змінити макет запиту (Изменить макет запроса, Modify the query design).
При необхідності можна установити прапорець Вивести довідку по роботі з запитом? (Вывести справку по работе с запросом?, Display Help on working with the query) для виводу довідкової інформації з роботи з запитами.
Рис. 1. Вікно створення нового запиту
Рис. 2. Перше діалогове вікно Майстра простих запитів
Натиснути на кнопку Готове (Готово, Finish).
По закінченню роботи Майстра простих запитів у залежності від вибору способу подальшої роботи з запитом відкриється або вікно запиту в режимі перегляду, або вікно Конструктора запитів, у якому можна модифікувати запит. У вікно Конструктора можна потрапити і безпосередньо з Майстра запитів, обравши у передостанньому вікні опцію “Змінити структуру запиту”. Це дуже зручно при створенні запитів з параметрами.
2.2. Створення і зміна запиту за допомогою Конструктора запитів
Для зміни вже існуючих запитів і для створення нових запитів використовується Конструктор запитів (Конструктор запросов). Для того щоб відкрити запит у режимі Конструктора, виділіть в списку один з існуючих запитів, і натисніть кнопку Конструктор (Design) на панелі інструментів вікна База даних (База данных, Database).
З'являється вікно Конструктора запитів. У верхній частині вікна відображається таблиця (чи кілька таблиць, якщо запит багатотабличний) у тому вигляді, у якому таблиці відображуються у вікні Схема даних (Схема данных, Relationship). Таблиці, які є джерелами даних для запиту, ми називають базовими таблицями запиту. У нижній частині вікна знаходиться бланк запиту — таблиця, комірки якої використовуються для визначення запиту. У бланку відображаються всі стовпці, включені в результуючу множину запиту.
Для того щоб переглядати повністю бланк запиту і усі вихідні таблиці, використовують лінійки прокручування.
В області панелей інструментів Access відображається панель інструментів Конструктор запитів (Конструктор запросов, Queries Design). Ця панель представлена на рис. 3, а в табл. 1 наведений опис кнопок цієї панелі і відповідні до них команди меню.
Рис. 3. Панель інструментів Конструктора запитів (Конструктор запросов)
Таблица 1.
Опис деяких кнопок на панелі інструментів Конструктора запитів (Конструктор запросов)
Для створення нового запиту за допомогою Конструктора необхідно виконати наступні операції.
У вікні бази даних на панелі об'єктів вибрати ярлик Запити (Запросы, Queries).
У списку запитів вибрати ярлик Створення запиту в режимі конструктора (Создание запроса в режиме конструктора, Create query in Design view) чи натиснути кнопку Створити (Создать, New), у вікні, що з'явилося, Новий запит (Новый запрос, New Query) вибрати Конструктор (Design view) і натиснути на кнопку .
У вікні Додавання таблиці (Добавление таблицы, Show Table) (рис. 4) вибрати одну чи кілька таблиць чи запитів для побудови нового запиту і натиснути кнопку Додати (Добавить, Add). Для зручності вибору таблиць і запитів у вікні існують наступні вкладки: Таблиці (Таблицы, Tables), на якій відображується список таблиць; Запити (Запросы, Queries), на якій відображується список запитів; Таблиці і запити (Таблицы и запросы, Both), на якій відображується список таблиць і запитів разом.
Рис. 4. Вікно Добавление таблицы Конструктора запитів
Після додавання всіх необхідних таблиць натиснути кнопку Закрити (Закрыть, Close) у вікні Додавання таблиці (Добавление таблицы, Show Table). Всі обрані таблиці виявляються розташованими на верхній панелі вікна Конструктора запитів. Якщо таблиці зв'язані між собою, тобто зв'язки присутні явно на схемі даних, то ці зв'язки також відображаються (рис. 5). Якщо зв'язки на схемі даних не встановлені, то Конструктор запитів автоматично встановлює зв'язки між таблицями, якщо вони містять поля, що мають однакові імена і узгоджені типи
Рис. 5. Запит по декількох зв'язаних таблицях
Потім потрібно вказати, які поля з базових таблиць будуть відображатися в запиті. Включати в запит можна поля з будь-якої таблиці. Способів включення полів у запит існує кілька:
можна виділити потрібне поле в таблиці-джерелі (можна виділити кілька полів, користаючись клавішами <Shift> і <Ctrl>). Якщо потрібно включити в запит усі поля базової таблиці, виділіть поле, позначене зірочкою (*). Двічі клацніть лівою кнопкою миші на виділеному полю. При цьому в бланку запиту з'явиться стовпець, що відповідає обраному полю. Потім аналогічно додайте інші поля. Стовпці в бланку запиту при цьому заповнюються ліворуч праворуч;
можна підвести курсор миші до виділеного поля (одного з виділених полів), натиснути на ліву кнопку миші і перетягнути поле (поля) у потрібне місце бланка запиту (курсор миші при цьому повинний прийняти вигляд трьох прямокутників). Останній спосіб дозволяє поміщати поля в будь-яке місце бланка запиту;
І нарешті, замість перетаскування полів у бланк запиту з таблиці можна просто використовувати список полів, що розкривається, у рядку Поле (Field) бланка запиту.
У запити, створені за допомогою Конструктора чи Майстра запитів, можна додавати таблиці. Щоб додати в запит ще одну таблицю чи запит, слід виконати наступні операції.
Натиснути кнопку Додати таблицю (Добавить таблицу, Show Table) на панелі інструментів чи виконати команду меню Запит (Запрос), Додати таблицю (Добавить таблицу) (Query, Show Table).
У вікні Додавання таблиці (Добавление таблицы, Show Table) вибрати вкладку, що містить необхідні об'єкти. Якщо потрібна таблиця знаходиться в іншій базі даних чи іншому додатку, необхідно спочатку приєднати цю таблицю до поточної бази даних.
Вибрати ім'я об'єкта, що додається в запит.
Натиснути кнопку Додати (Добавить, Add), а потім кнопку Закрити (Закрыть, Close). Додати таблицю чи ще один запит у вікно Конструктора запитів можна також шляхом перетаскування мишею назви таблиці чи запиту з вікна бази даних.
Щоб видалити базову таблицю з запиту, необхідно виділити її, клацнувши на будь-якому місці в списку її полів, і натиснути клавішу <Delete>. Щоб видалити поле з запиту, необхідно виділити потрібний стовпець у бланку запиту, а потім натиснути клавішу <Delete>. Щоб виділити стовпець, користайтеся областю виділення стовпців — вузькою сірою смужкою над стовпцями в бланку запиту. Коли ви підводите покажчик миші до цієї області, він перетвориться в жирну стрілку, спрямовану вниз.
Поля в таблиці, що є результатом запиту, відображаються в тому порядку, у якому вони ідуть у бланку запиту. Якщо потрібно змінити порядок їхнього проходження, переставте відповідним чином стовпці в бланку запиту. Робиться це стандартним способом, тобто спочатку виділяється потрібний стовпець чи кілька стовпців, а потім вони перетягуються мишею на нове місце. При цьому відпускати кнопку миші потрібно тоді, коли покажчик миші виявиться перед тим стовпцем, що має бути праворуч від стовпця, що вставляється. Після вставки всі стовпці, розташовані праворуч від покажчика, зрушуються вправо. Якщо ви переміщаєте стовпці в кінець запиту, то відпускайте кнопку миші, коли покажчик виявиться перед першим вільним стовпцем.
У режимі Конструктора запитів можна змінювати імена полів запиту. Щоб перейменувати поле, необхідно установити курсор у бланку запиту перед першою літерою його імені і ввести нове ім'я і символ двокрапки. Зміна імені поля в бланку запиту приводить до зміни заголовка стовпця при перегляді запиту в режимі таблиці. Крім того, якщо на основі запиту створити новий об'єкт, наприклад форму чи звіт, у новому об'єкті буде використане нове ім'я поля. Ім'я поля базової таблиці при цьому не змінюється. Це ім'я також не змінюється в тих формах і звітах, що були створені на основі запиту до зміни імені поля. Імена полів у запитах повинні відповідати угодам про імена Microsoft Access. Щоб використовувати нове ім'я поля тільки в заголовках стовпців у режимі таблиці чи як підпис полів у формах і звітах, варто задати для цього поля властивість Підпис (Подпись, Caption), а не перейменовувати поле в бланку.
У рядку Умова відбору (Условие отбора, Criteria) і в рядку Або (или, Or) вказуються умови відбору записів. Такими умовами можуть бути логічні вирази. Наприклад, (>30), (='Іванов'), (=10) (like ‘Петров”) тощо.
Умови, що знаходяться в одному рядку, але в різних стовпцях бланка, поєднуються логічним оператором And (И). Якщо потрібно об'єднати умови відбору логічним оператором Or (Або), розмістіть ці умови в різних рядках бланка запиту.
Якщо критерій відбору дуже складний, можна вставляти додаткові рядки умов. Для цього необхідно:
виділити рядок, що має опинитися під рядком, що вставляється. Для цього потрібно підвести покажчик миші до лівої границі рядка (він повинен перетворитися в жирну стрілку, що указує вправо) і клацнути лівою кнопкою миші;
виконати команду Вставка, Рядки (Вставка, Строки , Insert, Rows) чи натиснути клавішу <Ins>. Новий порожній рядок уставляється над обраним. У нього можна вносити умови відбору.
Для видалення рядка умов відбору:
клацніть лівою кнопкою миші в будь-якім місці рядка;.
виконайте команду Виправлення, Видалити рядки (Правка, Удалить строки, Edit, Delete Rows).
Щоб встановити порядок сортування записів у запиті, використовуйте рядок Сортування (Сортировка, Sort). Для кожного поля, по якому повинні сортуватися записи, виберіть зі списку відповідний порядок сортування: по зростанню (по возрастанию, Ascending) чи по убуванню (по убыванию, Descending). За замовчуванням у всіх полях запиту встановлюється значення (відсутнє) (отсутствует, Not sorted).
Якщо потрібно відсортувати записи в запиті по декількох полях, розмістіть їх у бланку запиту таким чином, щоб вони були упорядковані зліва направо — саме в такому порядку буде виконуватися сортування.
Після формування бланка запиту його можна зберегти, натиснувши на кнопку Зберегти (Сохранить, Save) на панелі інструментів чи виконавши команду меню Файл, Зберегти (Файл, Сохранить; File, Save). При цьому з'являється діалогове вікно, у якому потрібно ввести ім'я запиту, що зберігається. Запит можна зберегти і закривши його.
Результати виконання запиту можна побачити, переключивши в режим Таблиці (Datasheet View) за допомогою кнопки Вид (View) чи натиснувши кнопку Запуск (Run) на панелі інструментів.
2.3. Види з'єднань у запитах
У залежності від розв'язуваних завдань з'єднання між таблицями в запитах можуть бути декількох видів.
Найбільш розповсюдженим є внутрішнє з'єднання (еквіз'єднання). Якщо таблиці зв'язані відношенням "один-до-багатьох", з'єднання ґрунтуються на унікальному значенні поля первинного ключа в одній таблиці і значеннях поля зовнішнього ключа в іншій таблиці. У результуюче множество запиту потрапляють усі записи з головної таблиці (таблиці на стороні "один"), для яких є відповідні записи в підлеглій таблиці (таблиці на стороні "багато хто"). Якщо в підлеглій таблиці записи з заданою величиною відсутні, то відповідні записи в головній таблиці в результуючу множину не включаються. Подібного роду з'єднання між таблицями Access створює автоматично, якщо:
у таблицях є поля з однаковими іменами і узгодженими типами, причому одне з полів є ключовим;
з'єднання було явно задане у вікні Схема даних (Relationships).
"Узгодженість типів" полів у більшості випадків означає однаковість типів. Винятком є поле типу Лічильник, що може мати розмір Довге ціле чи Код реплікації і може зв'язуватися з числовими полями відповідного розміру.
Результатом такого запиту є всі записи, значення зв'язаних полів яких в обох таблицях збігаються. Іншими словами, еквіз'єднання зв'язує записи в таблицях відношенням рівності значень єднальних полів.
Для створення запиту, що поєднує всі записи з однієї таблиці, і тільки ті записи з другий, у яких зв'язані поля збігаються, використовують зовнішнє з'єднання. У цьому випадку незалежно від того, чи є відповідні записи в другій таблиці, усі записи першої потрапляють у результуючу множину запиту.
Якщо необхідно зв'язати дані будь-яким відношенням, крім відношення рівності, використовують з'єднання за відношенням, чи тета-з'єднання. З'єднання по відношенню не відображається у вікні Схема даних і не виводиться у вікні Конструктора запитів.
Для позначення внутрішніх з'єднань у Access використовуються зарезервовані слова ANSI SQL INNER JOIN, а для вказівки зовнішніх з'єднань — слова LEFT JOIN чи RIGHT JOIN. Вираз WHERE <поле1>=<поле2> відповідає внутрішньому з'єднанню, a WHERE поле1>поле2 — з'єднанню за відношенням (одному з таких з'єднань).
Для зв'язування даних в одній таблиці застосовують рекурсивне з'єднання. Воно створюється шляхом додавання в запит копії таблиці (у результаті чого Access призначає псевдонім для копії) і зв'язування полів ідентичних таблиць.
2.3.1. Внутрішнє з'єднання
Внутрішнє з'єднання двох таблиць по одному полю в реляційній базі даних будується на основі відношення "один-до-багатьох". Прикладом може служити демонстраційна база даних "Борей" (Northwind), у якій усі з'єднання є внутрішніми з'єднаннями по одному полю на основі зазначеного відношення. У ході розробки баз даних, у яких передбачається використання запитів на основі внутрішніх з'єднань, дотримуйтеся наступних правил.
Кожна таблиця "один" повинна мати первинний ключ з унікальними.значеннями. Відсутність повторень значень поля чи полів первинного ключа в таблиці Access встановлює автоматично.
Відношення "багато-до-багатьох" реалізуйте на основі проміжної таблиці, що зв'язана з кожною з двох таблиць відношенням "багато-до-одного". Для обох зв'язків проміжна таблиця буде знаходитися з боку "багато ".
Необхідно витягти повторювані дані в нову таблицю і зв'язати її з таблицею, з якої ці дані були отримані, відношенням "багато-до-одного". Основна мета — однозначно визначити витягнуті дані. Часто для цього доводиться використовувати первинний ключ, що складається з кількох полів. Для автоматизації роботи з перебування і добування повторюваної інформації можна використовувати Майстер з аналізу таблиць Microsoft Access. Цей майстер запускається при виборі команди меню
Сервис, Анализ, Таблица (Tools, Analysis, Table).
2.3.2. Зовнішнє з'єднання
Зовнішні з'єднання бувають лівими чи правими. Запит, у якому беруть участь таблиці з лівим зовнішнім з'єднанням (LEFT JOIN чи *= у SQL), виводить усі записи таблиці "один", незалежно від того, чи є відповідні їм запису в таблиці "багато". І навпаки, запит, у якому беруть участь таблиці з правим зовнішнім з'єднанням (RIGHT JOIN чи =* у SQL), виводить усі записи таблиці "багато", незалежно від того, чи є відповідні їм записи в таблиці "один".
2.3.3. Рекурсивне з'єднання
Рекурсивні з'єднання – це з'єднання між дублікатами відношень, які відбивають зв'язки між окремими екземплярами сутностей з одного набору (наприклад, у сутності співробітники для вказування подружніх пар серед співробітників може бути використаний зв'язок одружений, реалізований через атрибут Чоловік /Дружина.
Рекурсивні з'єднання вкрай рідко використовуються в додатках Access завдяки можливості завдання обмежень значень і забезпеченню цілісності даних.
3. Практичні завдання
Завдання 1. Створення запиту-вибірки за допомогою Майстра запитів.
Сконструювати запит, який видає повну інформацію про клієнтів та замовлення для ІС “Замовлення1” за допомогою Майстра запитів. Для створення запиту виконайте наступну послідовність операцій.
У вікні бази даних на панелі об'єктів вибрати ярлик Запити (Запросы, Queries).
У списку запитів двічі клацнути лівою кнопкою миші на ярлику Створення запиту за допомогою майстра (Создание запроса с помощью мастера, Create query by using wizard)
У вікні Створення простих запитів (Создание простых запросов, Simple Query Wizard) у полі зі списком Таблиці і запити (Таблицы и запросы, Tables/Queries) вибрати таблиці, що будуть служити джерелом даних для створюваного запиту. Цей запит формується по двох таблицях – Замовлення та Клієнти, тому обирати таблиці треба по черзі. Спочатку оберіть таблицю Клієнти.
За допомогою стрілок вправо і вліво перемістити зі списку Доступні поля (Доступные поля , Available Fields) у список Обрані поля (Выбранные поля, Selected Fields) ті поля, що необхідні в конструйованому запиті. Для нашого запиту це поля ПІБ і Тел/факс.
Повторіть цю операцію для полів КодЗамовлення, ДатаЗамовлення та ЗагальнаСума з таблиці Замовлення
Натисніть кнопку Далі (Далее, Next).
Наступне діалогове вікно буде останнім. У ньому потрібно введіть ім'я створюваного запиту Замовлення 1 у поле Задайте ім'я запиту (Задайте имя запроса, What title do you want to your query?)
Натисніть кнопку Запуск (Run) або виберіть Режим таблицы (Query View) в списку кнопки Вид (View) на панелі інструментів для відображення результату запиту. Зверніть увагу на те, що заголовками полів у створеному наборі записів є підписи полів таблиці (що містять пробіли), а не їхні імена, у яких пробіли звичайно не використовуються.
Результат виконання запиту включіть у звіт.
Завдання 2. Створення запиту-вибірки за допомогою Конструктора запитів.
Сконструювати запит, який видає повну інформацію про клієнтів та замовлення для ІС “Замовлення” за допомогою Конструктора запитів. Цей запит формується по двох таблицях – Замовлення та Клієнти. Для створення запиту виконайте наступну послідовність операцій.
Оберіть категорію Запросы у вікні бази даних Access. Натисніть кнопку Создать і оберіть створення запиту за допомогою Конструктора (команда Конструктор, або команда Создать с помощью Конструктора)). Відкриється вікно Конструктора запитів.
Додайте у запит таблиці Замовлення та Клієнти. Оскільки ми створюємо запит у режимі Конструктора, то для додавання таблиць слід викликати вікно додавання кнопкою Добавление таблиц на Панелі інструментів. Базовою таблицею для запиту тут є таблиця Замовлення. Перевірте, який тип з'єднання встановлено.
Послідовно перетягніть униз, у рядок з написом Поле, відповідні поля з цих таблиць, а саме поля КодЗамовлення, ДатаЗамовлення та ЗагальнаСума з таблиці Замовлення та поля ПІБ і Тел/факс з таблиці Клієнти. Саме ці поля будуть міститися у підсумковому запиті. У рядку виведення поля на екран встановіть відповідний прапорець.
Відсортуйте записи у порядку збільшення загальної суми замовлення. Для цього у рядку Сортировка для поля ЗагальнаСума оберіть порядок По возрастанию.
Закрийте вікно Конструктора запитів і збережіть запит під назвою Замовлення. У вікні бази даних Access з’явиться новий запит. Відкрийте його, і побачите дані з двох таблиць.
Завдання 3. Створення запиту-вибірки з умовою вибірки
Для бази даних “Відділ кадрів”, створеної у попередній роботі, створити запит, що містить поля: Ідент_код, Прізвище, Ім'я, По_батькові, Дата_народж, що включає тільки тих співробітників, прізвища яких починаються з літери "С". Список повинний бути відсортований по даті народження по зростанню.
Для цього необхідно виконати наступну послідовність дій:
При обраній вкладці Запити (Запросы) клацнути по кнопці INCLUDEPICTURE \d \z "Базы данных_ Лабораторные работы5_files/b_create.gif". Відкривається вікно Новий запит (Новый запрос), у якому вибрати режим створення запиту Конструктор, потім - INCLUDEPICTURE \d \z "Базы данных_ Лабораторные работы5_files/b_OK.gif";
Відкривається вікно Запит1: запит на вибірку (Запрос1: запрос на выборку) , а потім активізується вікно Додавання таблиці (Добавление таблицы), у якому вибрати зі списку таблиць таблицю Співробітник клацанням миші по імені таблиці, а потім клацнути по кнопці INCLUDEPICTURE \d \z "Базы данных_ Лабораторные работы5_files/b_add.gif", після чого закрити вікно Додавання таблиці (Добавление таблицы);
Вікно Запит1: запит на вибірку (Запрос1: запрос на выборку) , складається з 2-х частин: У верхній частині розміщаються обрані таблиці чи запити, на базі яких будується запит; У нижній частині розташований бланк побудови запиту QBE (Query by example - запит за зразком);
За допомогою миші перемістити потрібні поля з обраної таблиці і задати способи сортування й умови добору з таблиці. Для цього:
виділити поля для запиту за допомогою миші в комбінації з клавішами Shift чи Ctrl і відбуксирувати на бланк побудови запиту QBE. Поля можна переміщати в бланк QBE і по одному.
у рядку Поле поля розміщаються по стовпцях зліва направо;
у рядку Ім'я таблиці відображається ім'я таблиці, з якої обране поле;
у рядку Сортування (Сортировка) в стовпці поля Дата_народж установити сортування по зростанню. Для цього клацнути мишею в рядку Сортування (Сортировка ) в стовпці поля Дата_народж , при цьому з'являється кнопка зі стрілкою, натискання на яку розкриває вікно вибору типу сортування. Вибрати тип сортування по зростанню (по возрастанию);
У рядку Виведення на екран (Вывод на экран ) можна відключити виведення поля на екран, забравши прапорець для відповідного поля;
У рядку Умова відбору (Условие отбора ) в стовпці Прізвище ввести умову Like "C*". Перед уведенням літери С перейти на російський шрифт;
Остаточний вигляд вікна конструктора запитів буде мати вигляд представлений на рис. 6.
Закрити вікно конструктора запиту і ввести ім'я запиту Прізвище_c у відповідь на питання зберегти зміни чи ні. У вікні бази даних при вкладці Запити (Запросы) з'явиться запит з Прізвище_c . Вікно Конструктора з макетом запиту включити у звіт.
Виконати запит на вибірку:
Клацнути мишею по запиту Прізвище_c, потім по кнопці INCLUDEPICTURE \d \z "Базы данных_ Лабораторные работы5_files/b_open.gif". На екран виводиться таблиця, у якій повинні відображатися три записи з прізвищами, що починаються на літеру С, записи відсортовані по даті народження по зростанню.
У випадку, якщо не отриманий очікуваний результат, внести зміни в запит. Клацнути мишею по запиті Прізвище_c, потім по кнопці INCLUDEPICTURE \d \z "Базы данных_ Лабораторные работы5_files/b_constr.gif". Внести необхідні зміни, зберегти запит, повторити його виконання. Результати виконання включити у звіт.
Завдання 4. Створення запиту-вибірки з умовою вибірки.
На основі попереднього запиту Замовлення (завдання 2) сформуйте запит, що видаватиме інформацію лише про крупні замовлення (на суму більше 600 грн.). Для цього виконайте наступні операції.
Для того, щоб змінити умови запиту – вивести лише замовлення на суму більше 600 грн, відкрийте запит у режимі конструктора, і у рядку Условие отбора поля ЗагальнаСума встановіть умову відбора >600.
Збережіть запит під назвою ЗамовленняКлієнти600. Запустивши цей запит, Ви маєте побачити лише замовлення на суму більше 600 грн, відсортовані за зростанням. Вікно Конструктора зі сформованим запитом та результат виконання запиту включіть у звіт
Зверніть увагу, що перейти з режиму перегляду в режим Конструктора запитів і навпаки можна за допомогою кнопки Вид (View) – самої лівої кнопки на Панелі інструментів.
Таким чином, побудова запиту в Access виконується за допомогою простих наочних маніпуляцій, що характерно з СУБД, що підтримують мову запитів QBE. Програмний код (текст) запиту на мові SQL формується в Access автоматично. Його можна переглянути, обравши зі списка кнопки Вид пункт Режим SQL. Створений Вами запит ЗамовленняКлієнти600 матиму на SQL такий ситаксис:
SELECT Замовлення.КодЗамовлення, Замовлення.ДатаЗамовлення, Замовлення.Загальна сума, Клієнти.ПІБ, Клієнти.[Тел/факс]
FROM Клієнти INNER JOIN Замовлення ON Клієнти.КодКлієнта =Замовлення.КодКлієнта
WHERE (((Замовлення.Загальна сума)>600))
ORDER BY Замовлення.Загальна сума;
Запит можна записати бепосередньо на SQL, але без особливої потреби цього робити не слід, оскільки Access коректно перекладає запити з візуаального представлення на мову SQL. Щоб краще зрозуміти зміст та складність правильної побудови запиту, спробуємо “перекласти” оператори запиту на українську мову:
ВИБРАТИ ПОЛЯ Замовлення.КодЗамовлення, Замовлення.ДатаЗамовлення, Замовлення.Загальна сума, Клієнти.ПІБ, Клієнти.[Тел/факс]
З ТАБЛИЦІ Клієнти ОБ'ЄДНАВ З Замовлення ПО ПОЛЯХ Клієнти.КодКлієнта =Замовлення.КодКлієнта
ЗА УМОВИ (ДЕ) (((Замовлення.Загальна сума)>600))
ВІДСОРТУВАВШИ ЗА ЗРОСТАННЯМ ПОЛЯ Замовлення.Загальна сума;
Після виконання запиту Microsoft Access виводить на екран результуючу множину, записи якої упорядковані за значенням первинного ключа (так само, як і при перегляді таблиці). Щоб змінити порядок сортування, наприклад, упорядкувати записи за убуваючою ціною товару:
Переключіться в режим Конструктора запиту.
Установіть курсор в поле Сортировка (Sort) стовпця "Цена", а потім натисніть клавішу <F4> або стрілку справа для виведення вмісту списку.
Виберіть елемент по убыванию (Descending).
Натисніть кнопку Запуск (Run) для виведення нового результату запиту
Збережіть запит, давши йому назву: "Відсортований список товарів".
Результати виконання запиту включіть у звіт.
Завдання 5. Створення запиту на основі зовнішнього з'єднання.
Запити, створені за завданнями 1 та 2, не дають змоги отримати інформацію про клієнтів, які не замовили жодного товару за звітний період. Для цього треба використати запит на основі зовнішнього з'єднання. Для цього
Створіть новий запит і додайте в нього таблиці Клієнти і Замовлення. Оскільки ці таблиці зв'язані відношенням "один-до-багатьох", між ними відразу з'являється з'єднуюча лінія.
Виділіть і перетягнете в бланк запиту поле ПІБ таблиці Клієнти і поля КодЗамовлення та ЗагальнаСума таблиці Замовлення.
Виконайте запит і подивіться, скільки записів буде повертати запит. Результати виконання запиту включіть у звіт.
Поверніться в режим Конструктора. Клацніть правою кнопкою миші на лінії, що з'єднує таблиці, і виберіть з контекстного меню команду Параметры объединения Традиційно термін JOIN, що застосовується до операції з'єднання таблиць, переводилося як "об'єднання", хоча насправді операція об'єднання таблиць — це UNION, що дозволяє об'єднати всі записи з однієї таблиці і всі записи з інший, а потім видалити записи, що дублюються. Проте, при локалізації діалогових вікон Access як і раніше, як ми бачимо, використовується термін "об'єднання" стосовно операції JOIN.
(Join Properties). З'явиться діалогове вікно, представлене на рис. 8. У даному вікні показані імена зв'язаних полів у таблицях. При цьому таблиця на стороні "один" вважається лівою (незалежно від того, як вона розташована у вікні Конструктора), а таблиця на стороні "багато" — правою. Нижче розташовані три перемикачі:
"1" задає внутрішнє з'єднання;
"2" — ліве зовнішнє з'єднання;
"3" — праве зовнішнє з'єднання.
Рис. 7 . Діалогове вікно Параметры объединения
Задайте ліве зовнішнє з'єднання, вибравши значення "2" (виводить всі записи з таблиці Клієнти і лише збіжні з таблиці Замовлення) Запити з правим зовнішнім з'єднанням використовуються набагато рідше, тому що, якщо при складанні схеми даних для зв'язку між таблицями встановлена посилальна цілісність, записів у таблиці "багато" (підлеглої), не зв'язаних із записами в таблиці "один" (головній), просто не може не бути
. Натисніть кнопку ОК для закриття діалогового вікна. При цьому на кінці лінії з'єднання з'явиться стрілка убік таблиці "багато", що вказує на ліве зовнішнє з'єднання.
Установіть сортування по зростанню для поля ЗагальнаСума у другому стовпці бланка запиту. Вікно Конструктора зі сформованим запитом включіть у звіт.
Збережіть запит під ім'ям "Всі клієнти1".
Натисніть на панелі інструментів кнопку Запуск (Run) для виведення результуючої множини запиту з лівим зовнішнім з'єднанням . Кількість записів має стати більшою, і перші два записи містять порожнє поле "Кодзаказа". Результат виконання запиту (перші записи) включіть у звіт.
На основі отриманого запиту створіть запит “Холодні клієнти”, що міститиме інформацію про клієнтів, що не робили замовлень взагалі. Для цього модифікуйте попередній запит у режимі Конструктора, у рядку Условие отбора поля ЗагальнаСума встановивши критерій is Null. Збережіть запит під назвою “Холодні клієнти”, вікно Конструктора з запитом включіть у звіт.
Виконайте запит, результати виконання включіть у звіт.
Аналогічно створюються запити, у яких бере участь кілька зв'язаних таблиць, що утворюють ланцюжок. При цьому в результат запиту можуть бути включені поля з усіх таблиць, що беруть участь у запиті, чи тільки поля з таблиць, що знаходяться на кінцях такого ланцюжка. В другому випадку таблиці на кінцях ланцюжка виявляються зв'язаними опосередковано, і щоб правильно побудувати запит, що з'єднує поля цих таблиць, необхідно включити в запит кожну таблицю, що бере участь у з'єднанні. Запити, що з'єднують опосередковано зв'язані записи, часто використовуються при аналізі даних за допомогою статистичних функцій SQL чи перехресних запитів Access.
Завдання 6. На основі рекурсивного з'єднання створіть запит до бази даних "Замовлення", у якому виводиться інформація про замовлення клієнтів, прийняті і виконані в один день.
Для створення такого запиту ми будемо використовувати таблицю Замовлення, попередньо модифікувавши її доданням поля Дата виконання замовлення. Для цього відкрийте таблицю Замовлення у режимі Конструктора таблиць, додайте поле ДатаВиконанняЗамовлення (підпис Дата виконання), встановіть той самий формат дати, що й для поля ДатаЗамовлення і введіть додаткові дані у стовпець Дата виконання замовлення відповідно до наведеної нижче таблиці:
Далі створіть новий запит за допомогою Конструктора запитів і додайте в нього таблицю Замовлення (або просто активуйте спочатку цю таблицю і створіть запит за допомогою Конструктора запитів).
Додайте в запит копію таблиці, повторно натиснувши кнопку Добавить (Show Table). Access присвоює копії ім'я Замовлення_1. Закрийте діалогове вікно Добавление таблицы (Show Table).
Перетягніть поле ДатаЗамовлення вихідної таблиці Замовлення на поле "ДатаВиконання" таблиці Замовлення_1. Між таблицями виникне з'єднання, позначене крапками з обох боків .
Перетягніть поля КодЗмовлення, КодКлієнта, ПІБменеджера та ДатаЗамовлення з таблиці Замовлення у перші чотири стовпці бланка запиту відповідно.
При використанні рекурсивних з'єднань потрібно задати виведення лише унікальних значень. Для цього двічі клацніть по вільній області верхньої частини вікна запиту, а потім у діалоговому вікні Свойства запроса (Query Properties) установіть значення Да (Yes) для властивості Уникальные значения (Unique Values). Закрийте вікно Свойства запроса (Query Properties).
Установіть сортування за убуванням для поля ДатаВиконання, щоб останні обслуговані замовлення були відображені першими. Вікно Конструктора зі сформованим запитом включіть у звіт. Запам'ятайте запит під ім'ям “Запити, виконані у той же день”
Натисніть кнопку Запуск (Run) і ви повинні отримати таблицю замовлень, у яких дата розміщення і виконання замовлення є однаковими. Результат виконання запиту включіть у звіт.
Завдання 7. На основі попереднього запиту створіть запит на виявлення менеджерів, що забезпечують виконання запиту в той же день, включивши у нього інформацію про телефон менеджера та його ПІБ. Щоб інформація про менеджера не виводилася кілька разів, проведіть групування по полю ПІБменеджера клацанням по піктограмці групових операцій ( ) на панелі інструментів. Вікно Конструктора з запитом та результат його виконання включити у звіт.
Оформити звіт до лабораторної роботи.
Навчальне видання
Методичні вказівки
Укладачі:
Л.К.Гліненко, канд. техн. наук, доц.
Є.І.Яковенко, канд. техн. наук, доц.
.
Редактор