Іноді створення й використання запитів в Access передбачає кілька етапів: вибір полів із таблиці, застосування певних умов (за потреби) і перегляд результатів. Та що робити, коли потрібні відомості зберігаються в різних таблицях? На щастя, ви можете створити запит, який об’єднує дані з кількох джерел. У цій статті описано сценарії отримання даних із різних джерел і надано відповідні вказівки.
У цій статті
Уточнення результатів запиту за допомогою даних із пов’язаної таблиці
Навіть якщо запит, створений на основі однієї таблиці, повертає потрібні відомості, ви можете отримувати точніші й корисніші результати, скориставшись даними з іншої таблиці. Наприклад, скажімо, за результатами запиту ви отримуєте список ідентифікаторів працівників. Проте ви розумієте, що було б краще отримати їхні імена з іншої таблиці. Щоб у результатах запиту відображалися також імена працівників, до нього потрібно включити обидві таблиці.
Створення запиту на основі головної та пов’язаної таблиць за допомогою майстра запитів
-
Переконайтеся, що таблиці мають визначений зв’язок в вікно "Зв’язки".
Ось як це зробити:
-
На вкладці Знаряддя бази даних у групі Відобразити або приховати натисніть кнопку Зв’язки.
-
На вкладці Конструктор у групі Зв’язок натисніть кнопку Усі зв’язки.
-
Виберіть таблиці, між якими потрібно визначити зв’язок.
-
Якщо таблиці відображаються у вікні "Зв’язки", переконайтеся, що між ними вже визначено зв’язок.
Зв’язок представлено лініями, які з’єднують спільні поля двох таблиць. Щоб з’ясувати, між якими полями встановлено зв’язок, двічі клацніть лінію.
-
Якщо таблиці не відображаються у вікні "Зв’язки", їх потрібно додати.
На вкладці Конструктор у групі Відобразити або приховати натисніть кнопку Імена таблиць.
Двічі клацніть кожну з таблиць, які потрібно відобразити, а потім натисніть кнопку Закрити.
-
-
Якщо ви не знайшли зв’язку між двома таблицями, створіть його, перетягнувши поле однієї таблиці на поле іншої. Типи даних полів, на основі яких ви створюєте зв’язки, мають збігатися.
Примітка.: Створити зв’язок між полями з типом даних "Лічильник" і "Число" можна, тільки якщо властивість "Розмір поля" першого з них має значення "Довге ціле число". У цьому можна переконатися під час створення зв’язку "один-до-багатьох".
Відкриється діалогове вікно Редагування зв’язків.
-
Натисніть кнопку Створити, щоб створити зв’язок.
Докладні відомості про можливості зі створення зв’язків див. в статті Створення, редагування та видалення зв’язків.
-
Закрийте вікно Зв’язки.
-
-
На вкладці Створення в групі Запити натисніть кнопку Майстер запитів.
-
У діалоговому вікні Новий запит виберіть Майстер простих запитів і натисніть кнопку OK.
-
У полі зі списком Таблиці та запити виберіть таблицю з основними відомостями, які потрібно додати до запиту.
-
Зі списку Доступні поля виберіть перше поле, яке потрібно додати до запиту, а потім натисніть кнопку з однією стрілкою вправо, щоб перемістити його до списку Вибрані поля. Виконайте ті самі дії з кожним полем цієї таблиці, яке слід включити до запиту. Це можуть бути поля, дані з яких потрібно відображати в результатах запиту, або поля, до яких можна застосувати умови, щоб обмежити кількість рядків вихідних даних.
-
У полі зі списком Таблиці та запити виберіть таблицю з пов’язаними даними, за допомогою яких можна уточнити результати запиту.
-
Додайте потрібні поля до списку Вибрані поля, а потім натисніть кнопку Далі.
-
У розділі Виконати запит на отримання відомостей або зведення? виберіть Докладно або Зведення.
Якщо в запиті не потрібно використовувати агрегатні функції (Сума, Середнє, Мінімум, Максимум, Кількість, StDev або Var), виберіть детальний запит. Інакше виберіть "Зведення". Потім натисніть кнопку Далі.
-
Натисніть кнопку Готово, щоб переглянути результати.
Приклад на основі бази даних компанії "Товари та послуги"
У прикладі нижче за допомогою майстра запитів ви створите запит, який повертає список замовлень, вартість доставки кожного з них та ім’я відповідального працівника.
Примітка.: Це передбачає змінення зразка бази даних компанії "Товари та послуги". Радимо створити її резервну копію, перш ніж продовжити.
Створення запиту за допомогою майстра запитів
-
Відкрийте зразок бази даних компанії "Товари та послуги". Закрийте форму входу.
-
На вкладці Створення в групі Запити натисніть кнопку Майстер запитів.
-
У діалоговому вікні Новий запит виберіть Майстер простих запитів і натисніть кнопку OK.
-
У полі зі списком Таблиці та запити виберіть Таблиця: Замовлення.
-
У списку Доступні поля двічі клацніть поле Ідентифікатор замовлення, щоб перемістити його до списку Вибрані поля. Двічі клацніть поле Оплата, щоб перемістити його до списку Вибрані поля.
-
У полі зі списком Таблиці та запити виберіть Таблиця: Працівники.
-
У списку Доступні поля двічі клацніть поле Ім’я, щоб перемістити його до списку Вибрані поля. Двічі клацніть поле Прізвище, щоб перемістити його до списку Вибрані поля. Натисніть кнопку Далі.
-
Оскільки ви створюєте список усіх замовлень, потрібно використовувати детальний запит. Щоб підсумувати вартість доставки замовлень за працівниками або застосувати іншу агрегатну функцію, використовуйте запит на отримання зведення. Клацніть Докладно (відображає кожне поле кожного запису), а потім натисніть кнопку Далі.
-
Натисніть кнопку Готово, щоб переглянути результати.
Запит повертає список замовлень, вартість кожного з них, а також ім’я та прізвище співробітника, який виконав певне замовлення.
Об’єднання даних двох таблиць завдяки їхнім зв’язкам із третьою таблицею
Часто дані у двох таблицях пов'язані між собою через третю таблицю. Зазвичай це відбувається тому, що дані між першими двома таблицями пов'язані в зв’язок "багато-до-багатьох". Часто доцільно розділити зв'язок "багато-до-багатьох" між двома таблицями на два зв'язки "один-до-багатьох" із трьома таблицями. Для цього потрібно створити третю таблицю , яка називається з'єднуючою таблицею або таблицею зв'язків, яка має первинний ключ та зовнішній ключ для кожної з інших таблиць. Після цього створюється зв'язок "один-до-багатьох" між кожним зовнішнім ключем у з'єднувальній таблиці та відповідним первинним ключем однієї з інших таблиць. У таких випадках до запиту потрібно додати всі три таблиці, навіть якщо потрібно отримати дані лише з двох із них.
Створення вибіркового запиту за допомогою таблиць зі зв’язком "багато-до-багатьох"
-
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
Двічі клацніть дві таблиці з даними, які потрібно додати до запиту, а також таблицю з'єднання, яка зв'язує їх, і натисніть кнопку Закрити.
Усі три таблиці, об’єднані за відповідними полями, з’являться в робочій області конструктора запитів.
-
Двічі клацніть поля, які потрібно використовувати в результатах запиту. Кожне поле відобразиться в бланку запиту.
-
У бланку запиту введіть умови для полів у рядок Критерії. Щоб поле, на основі якого задаються умови, не відображалося в результатах запиту, зніміть прапорець у відповідному рядку Відображення.
-
Щоб відсортувати результати на основі значення в полі, у бланку запиту у відповідному рядку Сортування виберіть За зростанням або За спаданням (залежно від того, як потрібно відсортувати записи).
-
На вкладці Конструктор у групі Результати натисніть кнопку Запуск.
Access відобразить результати запиту у вікні табличного подання даних.
Приклад на основі бази даних компанії "Товари та послуги"
Примітка.: Це передбачає змінення зразка бази даних компанії "Товари та послуги". Радимо створити її резервну копію, перш ніж продовжити.
Припустімо, у вас є нова можливість: постачальник в Ріо-де-Жанейро знайшов ваш веб-сайт і, можливо, захоче зробити з вами справу. Однак вони працюють тільки в Ріо і поблизу Сан-Паулу. Вони постачають кожну категорію харчового продукту, що ви брокер. Вони є досить великим бізнесом, і хочуть, щоб ваші запевнення, що ви можете надати їм доступ до достатньо потенційних продажів, щоб зробити це варто: принаймні R $ 20000,00 на рік продажів (близько $ 9300,00). Чи можете ви надати їм ринок, який їм потрібен?
Дані, які допоможуть відповісти на це питання, можна отримати з таблиць "Клієнти" та "Відомості про замовлення". Ці таблиці зв’язані між собою за допомогою таблиці "Замовлення". Зв’язки між таблицями вже визначено. У таблиці "Замовлення" кожне замовлення може містити дані про одного клієнта, пов’язаного з таблицею "Клієнти" через поле "Код користувача". Кожен запис у таблиці "Відомості про замовлення" пов’язаний лише з одним замовленням у таблиці "Замовлення" через поле "Ідентифікатор замовлення". Таким чином, можна отримати вичерпні відомості про всі замовлення певного клієнта.
У цьому прикладі ви створите перехресний запит, який повертає дані про загальний обсяг збуту за рік у Києві й Ірпіні.
Створення запиту в режимі конструктора
-
Відкрийте базу даних компанії "Товари та послуги". Закрийте форму входу.
-
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
Двічі клацніть елемент Клієнти, Замовлення, а потім –Відомості про замовлення.
Усі три таблиці з’являться в робочій області конструктора запитів.
-
У таблиці "Клієнти" двічі клацніть поле "Місто", щоб додати його до бланка запиту.
-
На бланку запиту в рядок Критерії стовпця Місто введіть In ("Київ";"Ірпінь"). Так ви додасте до запиту записи про замовлення клієнтів тільки з цих двох міст.
-
У таблиці "Відомості про замовлення" двічі клацніть поля "Дата розміщення" й "Вартість одиниці товару".
Ці поля буде додано до бланка запиту.
-
На бланку запиту в стовпці Дата розміщення виберіть рядок Поле. Замініть [Дата розміщення] на Рік: Format([Дата розміщення];"yyyy"). Це дасть змогу створити псевдонім поля (Рік) і використовувати лише значення року з дати, указаної в полі "Дата розміщення".
-
На бланку запиту в стовпці Вартість одиниці товару виберіть рядок Поле. Замініть [Вартість одиниці товару] на Збут: [Відомості про замовлення].[Вартість одиниці товару]*[Кількість]-[Відомості про замовлення].[Вартість одиниці товару]*[Кількість]*[Знижка]. Це дасть змогу створити псевдонім поля (Збут), який обчислює обсяг збуту для кожного запису.
-
На вкладці Конструктор у групі Тип запиту натисніть кнопку Перехресний.
На бланку запиту з’являться два нові рядки: Підсумок і Перехресний.
-
На бланку запиту в стовпці Місто клацніть рядок Перехресний, а потім виберіть Заголовок рядка.
Після цього значення міст використовуватимуться як заголовки рядків (запит повертатиме один рядок для кожного міста).
-
У стовпці Рік клацніть рядок Перехресний, а потім виберіть Заголовок стовпця.
Після цього значення року використовуватимуться як заголовки стовпців (запит повертатиме один стовпець для кожного року).
-
У стовпці Збут клацніть рядок Перехресний, а потім виберіть Значення.
Після цього значення збуту відображатимуться на перетині рядків і стовпців (запит повертатиме одне значення збуту для кожної комбінації міста й року).
-
У стовпці Збут клацніть рядок Підсумок, а потім виберіть Сума.
Після цього запит підсумовуватиме значення в цьому стовпці.
У рядку Підсумок двох інших стовпців можна залишити стандартне значення (Групування за), оскільки в стовпцях потрібно відобразити окремі значення, а не узагальнені.
-
На вкладці Конструктор у групі Результати натисніть кнопку Запуск.
Тепер ви маєте запит, який повертає відомості про загальний обсяг збуту за рік у Києві й Ірпіні.
Перегляд усіх записів із двох схожих таблиць
Іноді потрібно об’єднати дані з двох таблиць, які мають однакову структуру, але розміщені в різних базах даних. Нижче описано такий сценарій.
Уявімо, що ви аналізуєте результати опитування слухачів. Ви почали працювати над новим проектом, який дасть змогу двом навчальним закладам (вашому та ще одному) ділитися даними, покращуючи навчальну програму. У деяких випадках записи обох навчальних закладів краще переглядати разом.
Ви можете імпортувати дані другого навчального закладу до нових таблиць у своїй базі даних, але в такому разі зміни, унесені до цих даних, не відображатимуться. Найкраще встановити зв’язок із таблицями другого навчального закладу, а потім створити запити, які об’єднуватимуть ці дані. Так ви зможете аналізувати дані як єдиний набір, а не виконувати два різних аналізи й об’єднувати їх в один.
Щоб переглянути всі записи з двох таблиць з однаковою структурою, використовуйте запит на об’єднання.
Запити на об’єднання не відображаються в режимі конструктора. Їх можна створити за допомогою команд SQL, які потрібно вводити на вкладці об’єкта в режимі SQL.
Створення запиту на об’єднання за допомогою двох таблиць
-
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
На вкладці Конструктор у групі Тип запиту натисніть кнопку Об’єднання.
Запит переключиться з режиму конструктора в режим SQL. На цьому етапі вкладка об’єкта в режимі SQL пуста.
-
У режимі SQL введіть SELECT, а потім – список полів із першої таблиці, яку потрібно додати до запиту. Імена полів потрібно брати у квадратні дужки й розділяти крапкою з комою. Ввівши імена полів, натисніть клавішу Enter. Курсор переміститься вниз на один рядок у режимі SQL.
-
Введіть FROM, а потім – ім’я першої таблиці, яку потрібно додати до запиту. Натисніть клавішу Enter.
-
Якщо потрібно вказати умову для поля з першої таблиці, введіть WHERE, ім’я поля, оператор порівняння (зазвичай знак рівності (=)) і умову. Додаткову умову можна додати в кінці речення WHERE за допомогою ключового слова AND і синтаксису першої умови, наприклад WHERE [Рівень класу]="100" AND [Кількість кредитів]>2. Указавши умови, натисніть клавішу Enter.
-
Введіть UNION і натисніть клавішу Enter.
-
Введіть SELECT, а потім – список полів із другої таблиці, яку потрібно додати до запиту. Потрібно вказати ті самі поля, що й для першої таблиці, у тій самій послідовності. Імена полів потрібно брати у квадратні дужки й розділяти крапкою з комою. Ввівши імена полів, натисніть клавішу Enter.
-
Введіть FROM, а потім – ім’я другої таблиці, яку потрібно додати до запиту. Натисніть клавішу Enter.
-
За потреби додайте речення WHERE, як описано на кроці 6 цієї процедури.
-
Введіть крапку з комою (;), щоб позначити кінець запиту.
-
На вкладці Конструктор у групі Результати натисніть кнопку Запуск.
Результати відобразяться у вікні табличного подання даних.