Створіть запит на основі кількох таблиць

Іноді процес побудови та використання запитів у програмі Access - це просто питання вибору полів із таблиці, можливо, застосування деяких критеріїв, а потім перегляду результатів. Але що, якщо, як це буває частіше, потрібні вам дані поширюються в декількох таблицях? На щастя, ви можете створити запит, який поєднує інформацію з кількох джерел. У цій темі розглядаються деякі сценарії, коли ви отримуєте дані з кількох таблиць, і демонструє, як ви це робите.

створення

Що ти хочеш робити?

Використовуйте дані з відповідної таблиці, щоб покращити інформацію у вашому запиті

Можливо, трапляються випадки, коли запит, який базується на одній таблиці, дає вам потрібну інформацію, але витягування даних з іншої таблиці допомогло б зробити результати запиту ще чіткішими та кориснішими. Наприклад, припустимо, у вас є список ідентифікаторів співробітників, які відображаються в результатах вашого запиту. Ви розумієте, що корисніше було б переглядати ім’я співробітника в результатах, але імена працівників містяться в іншій таблиці. Щоб імена співробітників відображались у результатах вашого запиту, вам потрібно включити обидві таблиці у ваш запит.

За допомогою майстра запитів створіть запит із первинної та пов’язаної таблиці

Переконайтеся, що таблиці мають певний зв’язок у вікні Відносини.

На Інструментах баз даних на вкладці Показати/Приховати групу, клацніть Відносини.

Про дизайн на вкладці "Відносини" групі, натисніть Усі відносини.

Визначте таблиці, які повинні мати певний зв’язок.

Якщо таблиці видно у вікні Відносини, перевірте, чи стосунки вже визначені.

Зв'язок виглядає як лінія, що з'єднує дві таблиці в загальному полі. Ви можете двічі клацнути лінію зв’язку, щоб побачити, які поля в таблицях пов’язані зв’язком.

Якщо таблиці не видно у вікні Відносини, їх потрібно додати.

Про дизайн на вкладці Показати/Приховати групи, натисніть Імена таблиць.

Двічі клацніть кожну таблицю, яку потрібно показати, а потім натисніть кнопку Закрити.

Якщо ви не знайшли зв'язку між двома таблицями, створіть одну, перетягнувши поле з однієї з таблиць у поле іншої таблиці. Поля, на яких ви створюєте зв'язок між таблицями, повинні мати однакові типи даних.

Примітка: Ви можете створити взаємозв'язок між полем, що має тип даних AutoNumber, і полем, що має тип даних Number, якщо це поле має довгий цілий розмір поля. Це часто трапляється у випадках, коли ви створюєте стосунки «один до багатьох».

Редагувати відносини з'явиться діалогове вікно.

Натисніть Створити щоб створити стосунки.

Для отримання додаткової інформації про параметри, які ви маєте під час створення відносин, див. Статтю Створення, редагування або видалення відносин.

Закрийте вікно Відносини.

На Створити на вкладці Запити групу, натисніть Майстер запитів.

У Новому запиті діалоговому вікні клацніть Майстер простих запитів, а потім натисніть кнопку OK.

У таблицях/запитах клацніть таблицю, яка містить основну інформацію, яку ви хочете включити у свій запит.

У доступних полях списку, клацніть перше поле, яке ви хочете включити у свій запит, а потім клацніть одну стрілку вправо, щоб перемістити це поле до вибраних полів список. Зробіть те ж саме з кожним додатковим полем із цієї таблиці, яке ви хочете включити у свій запит. Це можуть бути поля, які потрібно повернути у вихідному запиті, або поля, які потрібно використовувати для обмеження рядків у вихідних даних, застосовуючи критерії.

У таблицях/запитах клацніть таблицю, що містить відповідні дані, які ви хочете використовувати для покращення результатів запиту.

Додайте поля, які ви хочете використовувати для покращення результатів запиту, до Вибраних полів і натисніть Далі.

У розділі Хочете отримати детальний або зведений запит?, клацніть або Детально або Підсумок.

Якщо ви не хочете, щоб ваш запит виконував будь-які сукупні функції (Сум, Сер, Хв, Макс, Рахувати, СтДев, або Var), виберіть деталізований запит. Якщо ви хочете, щоб ваш запит виконував сукупну функцію, виберіть підсумковий запит. Зробивши вибір, натисніть Далі.

Клацніть Готово для перегляду результатів.

Приклад, що використовує базу даних зразка Northwind

У наступному прикладі за допомогою майстра запитів ви створюєте запит, який відображає список замовлень, вартість доставки за кожне замовлення та ім’я працівника, який обробляв кожне замовлення.

Примітка: Цей приклад передбачає модифікацію бази даних Northwind. Можливо, ви захочете зробити резервну копію зразка бази даних Northwind, а потім скористайтеся цим прикладом, використовуючи цю резервну копію.

Для побудови запиту використовуйте майстер запитів

Відкрийте базу даних Northwind. Закрийте форму для входу.

На Створити на вкладці Запити групу, натисніть Майстер запитів.

У Новому запиті діалоговому вікні клацніть Майстер простих запитів, а потім натисніть кнопку OK.

У таблицях/запитах у списку клацніть Таблиця: Замовлення.

У доступних полях списку, двічі клацніть OrderID щоб перемістити це поле до Вибраних полів список. Двічі клацніть Плата за доставку щоб перемістити це поле до Вибраних полів список.

У таблицях/запитах у списку клацніть Таблиця: Співробітники.

У доступних полях списку, двічі клацніть Ім'я щоб перемістити це поле до Вибраних полів список. Двічі клацніть Прізвище щоб перемістити це поле до Вибраних полів список. Натисніть Далі.

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

Клацніть Готово для перегляду результатів.

Запит повертає список замовлень, кожен із яких має плату за доставку та ім’я та прізвище працівника, який його обробляв.

З’єднайте дані у дві таблиці, використовуючи їхні зв’язки з третьою таблицею

Часто дані у двох таблицях пов’язані між собою через третю таблицю. Зазвичай це трапляється, оскільки дані між першими двома таблицями пов’язані у взаємозв’язку «багато-до-багатьох». Часто вдалою практикою проектування баз даних є розділення взаємозв'язку "багато-до-багатьох" між двома таблицями на два відносини "один до багатьох", що включають три таблиці. Ви робите це, створюючи третю таблицю, яка називається таблицею з'єднань або таблицею зв'язків, яка має первинний ключ та зовнішній ключ для кожної з інших таблиць. Потім між кожним зовнішнім ключем у таблиці з'єднань та відповідним первинним ключем однієї з інших таблиць створюється зв'язок "один до багатьох". У таких випадках вам потрібно включити до запиту всі три таблиці, навіть якщо ви хочете отримати дані лише з двох з них.

Створіть запит вибору, використовуючи таблиці зі співвідношенням "багато-до-багатьох"

На Створити на вкладці Запити групі, натисніть Дизайн запитів.

Таблиця виставок відкриється діалогове вікно.

У таблиці виставок у діалоговому вікні двічі клацніть дві таблиці, що містять дані, які ви хочете включити у свій запит, а також таблицю з'єднань, яка зв’язує їх, а потім натисніть кнопку Закрити.

Усі три таблиці з’являються у робочій області проектування запитів, об’єднаних у відповідні поля.

Двічі клацніть на кожному з полів, які потрібно використовувати в результатах запиту. Потім кожне поле з’являється у сітці проектування запитів.

У сітці дизайну запитів використовуйте критерії рядок, щоб ввести критерії поля. Щоб використовувати критерій поля без відображення поля в результатах запиту, зніміть прапорець у поле Показати рядок для цього поля.

Щоб відсортувати результати на основі значень у полі, у сітці дизайну запиту натисніть Висхідний або за спаданням (залежно від того, яким способом ви хочете сортувати записи) у Сортування рядок для цього поля.

Про дизайн на вкладці Результати групи, натисніть Виконати.

Access відображає вихідні дані запиту у поданні таблиці даних.

Приклад, що використовує базу даних зразка Northwind

Примітка: Цей приклад передбачає модифікацію бази даних Northwind. Можливо, ви захочете зробити резервну копію зразка бази даних Northwind, а потім скористайтеся цим прикладом, використовуючи резервну копію.

Припустимо, у вас є нова можливість: постачальник у Ріо-де-Жанейро знайшов ваш веб-сайт і, можливо, захоче вести з вами бізнес. Однак вони діють лише в Ріо та неподалік Сан-Паулу. Вони постачають кожну категорію продовольчих товарів, яку ви брокер. Вони є досить великим бізнесом, і хочуть запевнити Вас, що Ви зможете надати їм доступ до достатньої кількості потенційних продажів, щоб зробити це вартим: щонайменше 20 000,00 R $ на продаж (близько 9 300,00 USD). Чи можете ви надати їм необхідний ринок?

Дані, необхідні для відповіді на це запитання, знаходяться у двох місцях: таблиця клієнтів та таблиця деталей замовлення. Ці таблиці пов’язані між собою таблицею замовлень. Взаємозв'язки між таблицями вже визначені. У таблиці Замовлення кожне замовлення може мати лише одного клієнта, пов’язаного з таблицею Замовники в полі CustomerID. Кожен запис у таблиці деталей замовлення пов’язаний лише з одним замовленням у таблиці замовлень у полі OrderID. Таким чином, у даного клієнта може бути багато замовлень, кожен з яких має багато деталей замовлення.

У цьому прикладі ви побудуєте перехресний запит, який відображатиме загальний обсяг продажів за рік у містах Ріо-де-Жанейро та Сан-Паулу.

Створіть запит у поданні дизайну

Відкрийте базу даних Northwind. Закрийте форму для входу.

На Створити на вкладці Запити групі, натисніть Дизайн запитів.

Таблиця виставок відкриється діалогове вікно.

У таблиці виставок у діалоговому вікні двічі клацніть «Клієнти», Або дерс, та Деталі замовлення, а потім натисніть кнопку Закрити.

Усі три таблиці відображаються у робочій області проектування запитів.

У таблиці Замовники двічі клацніть поле Місто, щоб додати його до сітки дизайну запитів.

У сітці дизайну запитів, у місті у стовпці Критерії рядок, введіть In ("Ріо-де-Жанейро", "Сан-Паулу"). Це спричиняє включення до запиту лише тих записів, де клієнт знаходиться в одному з цих двох міст.

У таблиці Подробиці замовлення двічі клацніть поля ShippedDate та UnitPrice.

Поля додаються до сітки дизайну запиту.

У Даті відправлення у сітці дизайну запиту виберіть поле рядок. Замінити [Дата доставки] з Рік: Формат ([Дата доставки], "рррр"). Це створює псевдонім поля, Рік, що дозволяє використовувати лише річну частину значення в полі ShippedDate.

У UnitPrice у сітці дизайну запиту виберіть поле рядок. Замінити [UnitPrice] з продажами: [Деталі замовлення]. [Одиниця ціни] * [Кількість] - [Деталі замовлення]. [Одиниця ціни] * [Кількість] * [Знижка]. Це створює псевдонім поля Продажі, що обчислює продажі для кожного запису.

Про дизайн на вкладці Тип запиту групу, натисніть Crosstab.

Два нові рядки, всього та Crosstab, з'являються в сітці дизайну запиту.

В місті у сітці дизайну запиту клацніть перехресну таблицю рядок, а потім натисніть Заголовок рядка.

Це призводить до того, що значення міст відображаються як заголовки рядків (тобто запит повертає по одному рядку для кожного міста).

У році натисніть перехресну таблицю рядок, а потім натисніть Заголовок стовпця.

Завдяки цьому значення року відображаються як заголовки стовпців (тобто запит повертає один стовпець на кожен рік).

У продажу натисніть перехресну таблицю рядок, а потім натисніть Значення.

Це робить значення продажів відображеними на перетині рядків і стовпців (тобто запит повертає одне значення продажів для кожної комбінації міста та року).

У продажу клацніть Підсумки рядок, а потім натисніть Сума.

Це змушує запит підсумовувати значення в цьому стовпці.

Ви можете залишити підсумки рядок для двох інших стовпців зі значенням за замовчуванням Group By, оскільки ви хочете бачити кожне значення для цих стовпців, а не сукупні значення.

Про дизайн на вкладці Результати групи, натисніть Виконати.

Тепер у вас є запит, який повертає загальний обсяг продажів за рік у Ріо-де-Жанейро та Сан-Паулу.

Перегляньте всі записи з двох подібних таблиць

Іноді вам захочеться об’єднати дані з двох однакових за структурою таблиць, але одна з них знаходиться в іншій базі даних. Розглянемо наступний сценарій.

Припустимо, ви аналітик, який працює зі студентськими даними. Ви починаєте ініціативу щодо обміну даними між вашою школою та іншою школою, щоб обидві школи могли вдосконалити свої навчальні програми. Для деяких питань, які ви хочете дослідити, було б краще переглянути всі записи обох шкіл разом, а не записи кожної школи окремо.

Ви можете імпортувати дані іншої школи до нових таблиць у вашій базі даних, але тоді будь-які зміни до даних іншої школи не відображатимуться у вашій базі даних. Кращим рішенням було б встановити посилання на таблиці інших шкіл, а потім створити запити, що поєднують дані під час їх запуску. Ви зможете аналізувати дані як єдиний набір, а не виконувати два аналізи та намагатися інтерпретувати їх так, ніби вони єдині.

Щоб переглянути всі записи з двох таблиць з однаковою структурою, ви використовуєте запит об'єднання.

Запити на об'єднання не можуть відображатися в режимі дизайну. Ви створюєте їх за допомогою команд SQL, які ви вводите на вкладці об'єкта перегляду SQL.

Створіть запит об’єднання за допомогою двох таблиць

На Створити на вкладці Запити групі, натисніть Дизайн запитів.

Відкриється нова сітка дизайну запитів і відобразиться таблиця з'явиться діалогове вікно.

У таблиці виставок діалоговому вікні натисніть кнопку Закрити.

Про дизайн на вкладці Тип запиту групу, клацніть Союз.

Запит перемикається з подання проекту на подання SQL. На даний момент вкладка об’єкта подання SQL порожня.

У поданні SQL введіть SELECT, за яким слід список полів із першої з таблиць, які ви хочете отримати у запиті. Назви полів слід укладати в квадратні дужки та розділяти їх комами. Закінчивши вводити імена полів, натисніть ENTER. Курсор рухається вниз на один рядок у поданні SQL.

Введіть FROM, а потім ім'я першої з таблиць, яку ви хочете отримати у запиті. Натисніть ENTER.

Якщо ви хочете вказати критерій для поля з першої таблиці, введіть WHERE, за яким слідує назва поля, оператор порівняння (зазвичай, знак рівності (=)), і критерій. Ви можете додати додаткові критерії в кінець речення WHERE, використовуючи ключове слово AND та той самий синтаксис, що використовується для першого критерію; наприклад, WHERE [ClassLevel] = "100" І [CreditHours]> 2. Закінчивши вказувати критерії, натисніть ENTER.

Тип СОЮЗ, а потім натисніть клавішу ENTER.

Введіть SELECT, за яким слідує список полів з другої таблиці, яку ви хочете отримати у запиті. Ви повинні включити ті самі поля з цієї таблиці, що і з першої таблиці, і в тому ж порядку. Назви полів слід укладати в квадратні дужки та розділяти їх комами. Закінчивши вводити імена полів, натисніть ENTER.

Введіть FROM, а потім ім'я другої таблиці, яку ви хочете включити в запит. Натисніть ENTER.

Якщо хочете, додайте пропозицію WHERE, як описано в кроці 6 цієї процедури.

Введіть крапку з комою (;), щоб вказати кінець вашого запиту.

Про дизайн на вкладці Результати групи, натисніть Виконати.