Іноді створення й використання запитів в Access передбачає кілька етапів: вибір полів із таблиці, застосування певних умов (за потреби) і перегляд результатів. Та що робити, коли потрібні відомості зберігаються в різних таблицях? На щастя, ви можете створити запит, який об’єднує дані з кількох джерел. У цій статті описано сценарії отримання даних із різних джерел і надано відповідні вказівки.
У цій статті
- Уточнення результатів запиту за допомогою даних із пов’язаної таблиці
- Об’єднання даних двох таблиць завдяки їхнім зв’язкам із третьою таблицею
- Перегляд усіх записів із двох схожих таблиць
Уточнення результатів запиту за допомогою даних із пов’язаної таблиці
Навіть якщо запит, створений на основі однієї таблиці, повертає потрібні відомості, ви можете отримувати точніші й корисніші результати, скориставшись даними з іншої таблиці. Наприклад, скажімо, за результатами запиту ви отримуєте список ідентифікаторів працівників. Проте ви розумієте, що було б краще отримати їхні імена з іншої таблиці. Щоб у результатах запиту відображалися також імена працівників, до нього потрібно включити обидві таблиці.
Створення запиту на основі головної та пов’язаної таблиць за допомогою майстра запитів
У вікні "Зв'язки" переконайтеся, що таблиці мають визначені зв'язки.
Ось як це зробити:На вкладці Знаряддя бази даних у групі Відобразити або приховати натисніть кнопку Зв’язки.
На вкладці Конструктор у групі Зв’язок натисніть кнопку Усі зв’язки.
Виберіть таблиці, між якими потрібно визначити зв’язок.
- Якщо таблиці відображаються у вікні "Зв’язки", переконайтеся, що між ними вже визначено зв’язок.
Зв’язок представлено лініями, які з’єднують спільні поля двох таблиць. Щоб з’ясувати, між якими полями встановлено зв’язок, двічі клацніть лінію. - Якщо таблиці не відображаються у вікні "Зв’язки", їх потрібно додати.
На вкладці Конструктор у групі Відобразити або приховати натисніть кнопку Імена таблиць.
Двічі клацніть кожну з таблиць, які потрібно відобразити, а потім натисніть кнопку Закрити.
- Якщо таблиці відображаються у вікні "Зв’язки", переконайтеся, що між ними вже визначено зв’язок.
Якщо ви не знайшли зв’язку між двома таблицями, створіть його, перетягнувши поле однієї таблиці на поле іншої. Типи даних полів, на основі яких ви створюєте зв’язки, мають збігатися.
Примітка.
Можна створити зв'язок між полем із типом даних "Автонумерація" та полем із числовим типом даних, якщо таке поле має довгий цілочисельний розмір. Так часто буває, коли створюється зв'язок "один-до-багатьох".
Відкриється діалогове вікно Редагування зв’язків.
Натисніть кнопку Створити, щоб створити зв’язок.
Докладні відомості про можливості зі створення зв’язків див. в статті Створення, редагування та видалення зв’язків.Закрийте вікно Зв’язки.
На вкладці Створення в групі Запити натисніть кнопку Майстер запитів.
У діалоговому вікні Новий запит виберіть Майстер простих запитів і натисніть кнопку OK.
У полі зі списком Таблиці та запити виберіть таблицю з основними відомостями, які потрібно додати до запиту.
Зі списку Доступні поля виберіть перше поле, яке потрібно додати до запиту, а потім натисніть кнопку з однією стрілкою вправо, щоб перемістити його до списку Вибрані поля. Виконайте ті самі дії з кожним полем цієї таблиці, яке слід включити до запиту. Це можуть бути поля, дані з яких потрібно відображати в результатах запиту, або поля, до яких можна застосувати умови, щоб обмежити кількість рядків вихідних даних.
У полі зі списком Таблиці та запити виберіть таблицю з пов’язаними даними, за допомогою яких можна уточнити результати запиту.
Додайте потрібні поля до списку Вибрані поля, а потім натисніть кнопку Далі.
У розділі Виконати запит на отримання відомостей або зведення? виберіть Докладно або Зведення.
Якщо в запиті не потрібно використовувати агрегатні функції (Сума, Середнє, Мінімум, Максимум, Кількість, StDev або Var), виберіть детальний запит. Інакше виберіть "Зведення". Потім натисніть кнопку Далі.Натисніть кнопку Готово, щоб переглянути результати.
Приклад на основі бази даних компанії "Товари та послуги"
У прикладі нижче за допомогою майстра запитів ви створите запит, який повертає список замовлень, вартість доставки кожного з них та ім’я відповідального працівника.
Примітка.
Це передбачає змінення зразка бази даних компанії "Товари та послуги". Радимо створити її резервну копію, перш ніж продовжити.
Створення запиту за допомогою майстра запитів
- Відкрийте зразок бази даних компанії "Товари та послуги". Закрийте форму входу.
- На вкладці Створення в групі Запити натисніть кнопку Майстер запитів.
- У діалоговому вікні Новий запит виберіть Майстер простих запитів і натисніть кнопку OK.
- У полі зі списком Таблиці та запити виберіть Таблиця: Замовлення.
- У списку Доступні поля двічі клацніть поле Ідентифікатор замовлення, щоб перемістити його до списку Вибрані поля. Двічі клацніть поле Оплата, щоб перемістити його до списку Вибрані поля.
- У полі зі списком Таблиці та запити виберіть Таблиця: Працівники.
- У списку Доступні поля двічі клацніть поле Ім’я, щоб перемістити його до списку Вибрані поля. Двічі клацніть поле Прізвище, щоб перемістити його до списку Вибрані поля. Натисніть кнопку Далі.
- Оскільки ви створюєте список усіх замовлень, потрібно використовувати детальний запит. Щоб підсумувати вартість доставки замовлень за працівниками або застосувати іншу агрегатну функцію, використовуйте запит на отримання зведення. Клацніть Докладно (відображає кожне поле кожного запису), а потім натисніть кнопку Далі.
- Натисніть кнопку Готово, щоб переглянути результати.
Запит повертає список замовлень, вартість кожного з них, а також ім’я та прізвище співробітника, який виконав певне замовлення.
Об’єднання даних двох таблиць завдяки їхнім зв’язкам із третьою таблицею
Часто дані у двох таблицях пов'язані між собою через третю таблицю. Зазвичай так відбувається тому, що дані перших двох таблиць пов'язані між собою зв'язком "багато-до-багатьох". Часто під час розробки баз даних доцільно розділити зв'язок "багато-до-багатьох" між двома таблицями на два зв'язки "один-до-багатьох", у якому беруть участь три таблиці. Для цього потрібно створити третю таблицю, яка називається сполучною або таблицею зв'язків, яка містить первинний і зовнішній ключі для кожної з інших таблиць. Після цього створюється зв'язок "один-до-багатьох" між кожним зовнішнім ключем у таблиці з'єднання та відповідним первинним ключем однієї з інших таблиць. У таких випадках потрібно включити в запит всі три таблиці, навіть якщо потрібно отримати дані лише з двох із них.
Створення вибіркового запиту за допомогою таблиць зі зв’язком "багато-до-багатьох"
- На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
- Двічі клацніть дві таблиці з даними, які потрібно включити до запиту, а також сполучну таблицю, яка зв'язує їх, і натисніть кнопку "Закрити".
Усі три таблиці, об’єднані за відповідними полями, з’являться в робочій області конструктора запитів. - Двічі клацніть поля, які потрібно використовувати в результатах запиту. Кожне поле потім відображається в сітці макета запиту.
- У бланку запиту введіть умови для полів у рядок Критерії. Щоб поле, на основі якого задаються умови, не відображалося в результатах запиту, зніміть прапорець у відповідному рядку Відображення.
- Щоб відсортувати результати на основі значення в полі, у бланку запиту у відповідному рядку Сортування виберіть За зростанням або За спаданням (залежно від того, як потрібно відсортувати записи).
- На вкладці Конструктор у групі Результати натисніть кнопку Запуск.
Результат запиту відобразиться у вікні табличного подання даних.
Приклад на основі бази даних компанії "Товари та послуги"
Примітка.
Це передбачає змінення зразка бази даних компанії "Товари та послуги". Радимо створити її резервну копію, перш ніж продовжити.
Припустімо, у вас з'явилася нова можливість: постачальник із Ріо-де-Жанейро знайшов ваш веб-сайт і, можливо, захоче співпрацювати з вами. Однак вони працюють лише в Ріо та сусідньому Сан-Паулу. Вони постачають кожну категорію харчових продуктів, які ви обслуговуєте. Це досить великий бізнес, і вам потрібні ваші гарантії, що ви можете надати їм доступ до достатньої кількості потенційних продажів, щоб зробити його виправданим: не менше 20 000,00 реалів на рік продажів (близько 9 300,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 цієї процедури.
- Введіть крапку з комою (;), щоб позначити кінець запиту.
- На вкладці Конструктор у групі Результати натисніть кнопку Запуск.
Результати відобразяться у вікні табличного подання даних.