Об’єднання таблиць і запитів

Об’єднання таблиць і запитів

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

Коли ви включаєте кілька джерел даних у запиті Access, ви використовуєте об'єднання, щоб обмежити записи, які потрібно переглянути, залежно від того, як джерела даних пов'язані між собою. Можна також використовувати об’єднання для записів з обох джерел даних, так що кожна пара записів з джерел стає одним записом у результатах запиту.

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

Примітка.: Ви можете приєднатися до запитів так само, як ви приєднаєтеся до таблиць, а також можете приєднатися до обох.

У цій статті

Огляд

Типи об’єднань

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

Відображення всіх рядків з однієї таблиці та відповідних рядків з іншої таблиці

Відображення всіх рядків з обох таблиць і приєднання до них, де існує загальне значення

Перехресні об'єднання

Об'єднання таблиць на основі нерівності значень полів

Видалення об’єднання

Огляд

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

Під час додавання таблиць до запиту _ z0z_ створює об'єднання, створені на основі зв'язків, визначених між таблицями. Ви можете вручну створити об'єднання в запитах, навіть якщо вони не представляють зв'язки, які вже визначено. Якщо ви використовуєте інші запити (замість або крім таблиць) як джерела даних для запиту, можна створити з'єднання між вихідними запитами, а також між цими запитами та будь-якими таблицями, які використовуються як джерела даних.

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

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

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

Вікно параметрів об’єднання.

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

Об’єднання іноді є спрямованим. Ця область у діалоговому вікні показує, які таблиці знаходяться в об’єднанні, і поля, які використовуються для об’єднання таблиць.

Ця область визначає тип об’єднання: параметр 1 є внутрішнім об’єднанням, 2 є лівим зовнішнім об’єднанням, а 3 є правим зовнішнім об’єднанням.

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

На початок сторінки

Типи об’єднань

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

Внутрішні об’єднання: використовуються лише пов’язані дані з обох таблиць

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

Зовнішні об’єднання: правильно поєднуються всі пов’язані дані, а також решта записів з однієї таблиці

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

Повне зовнішнє об’єднання: усі дані об’єднуються, якщо це можливо

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

Перехресне об’єднання: усі дані об’єднуються всіма можливими способами

Частіше за все перехресне об’єднання є побічним ефектом ситуації, коли у запит додають дві таблиці, а потім забувають об’єднати їх. Access інтерпретує це так, ніби ви хочете побачити всі записи з однієї таблиці в поєднанні з усіма записами з іншої таблиці – всі можливі комбінації записів. Бо жодні дані не вдається об’єднати, цей вид об’єднання рідко дає корисні результати. Але в кількох ситуаціях перехресне об’єднання є саме тим, що вам потрібно.

Порівняльне об’єднання: аналогічне звичайному об’єднанню, але під час об’єднання виконується порівняння рядків

У порівняльному об’єднанні використовується оператор, відмінний від знака рівності (=) для порівняння значень і визначення, чи потрібно об’єднати ці дані. Порівняльне об’єднання не підтримується явно, але для досягнення цього ж ефекту ви можете використати перехресне об’єднання й умови.

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

Якщо ви хочете показувати тільки ті рядки, які містять в об’єднуваному полі значення, що збігаються, можна використовувати внутрішнє об’єднання. Access створює внутрішні об’єднання автоматично.

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

Як можна використовувати внутрішнє об’єднання?

У більшості випадків вам не потрібно робити нічого для використання внутрішнього об’єднання. Якщо додані в запит таблиці вже мають зв’язки, Access автоматично створює внутрішнє об’єднання між кожною парою зв’язаних таблиць під час додавання таблиць. Якщо цілісність зв’язків є обов’язковою, Access також відображає "1" над лінією об’єднання, щоб показати, яка з таблиць знаходиться на стороні "один" у зв’язок "один-до-багатьох", а символ нескінченності (∞), щоб показати, яка таблиця знаходиться на стороні "багатьох".

Навіть якщо зв'язки не створено, програма Access автоматично створить внутрішні об'єднання, якщо ви додаєте дві таблиці до запиту та ці таблиці мають поле з таким самим або сумісним типом даних, а один із полів JOIN – _ z0z_. Символи "один" і "багато" в цьому випадку не відображаються, оскільки цілісність зв’язків не обов’язкова.

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

Синтаксис SQL для внутрішнього об’єднання

Внутрішні об’єднання в SQL визначаються реченням FROM, як показано нижче:

FROM таблиця1 INNER JOIN таблиця2 ON таблиця1.поле1» Порівняйте таблиця2.поле2

Операція INNER JOIN складається з таких частин:

Частина

Опис

таблиця1, таблиця2

Імена таблиць, записи яких буде об’єднано.

поле1, поле2

Імена об’єднаних полів. Якщо поля не числові, вони повинні мати однаковий тип даних, але не повинні мати однакові імена.

compare

Будь-який реляційний оператор порівняння: "=", "<", ">", "<=", ">=" або "<>"

Додаткові відомості про синтаксис операції INNER JOIN можна знайти в розділі Операція INNER JOIN.

На початок сторінки

Відображення всіх рядків з однієї таблиці та відповідних рядків з іншої таблиці

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

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

Примітка.: Можна легко визначити ліву і праву таблиці в даному об’єднанні, двічі клацнувши об’єднання і переглянувши діалогове вікно Параметри об’єднання. Також можна перейти до подання SQL, а потім перевірити речення FROM.

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

Як можна використовувати зовнішнє об’єднання?

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

Зміна внутрішнього об’єднання на зовнішнє об’єднання

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

    Відкриється діалогове вікно Параметри об’єднання.

  2. У діалоговому вікні Параметри об’єднання зверніть увагу на значення параметра 2 і параметра 3.

  3. Виберіть параметр, який ви хочете використовувати, і натисніть кнопку OK.

  4. Access відображає об’єднання і стрілку, яка вказує на джерело даних, де всі рядки будуть включені в джерело даних, у яке будуть включені тільки ті рядки, які задовольняють умові об’єднання.

Неоднозначне зовнішнє об’єднання

Якщо ви створили запит, який містить параметри LEFT JOIN та INNER JOIN, Access не зможе визначити, яку операцію об’єднання слід виконати в першу чергу. Оскільки результати відрізняються залежно від того, чи виконується ліва Реєстрація або внутрішнє об'єднання, у програмі Access відобразиться повідомлення про помилку:

Щоб усунути цю помилку, потрібно змінити запит, щоб він був зрозумілим, який потрібно виконати в першу чергу.

Синтаксис SQL для зовнішнього об’єднання

Зовнішні об’єднання в SQL визначаються в реченні FROM, як показано нижче:

З Таблиця1 [зліва | Right] JOIN таблиця2
на Таблиця1. поле1» Порівняйте таблиця2. Поле2

Операції LEFT JOIN і RIGHT JOIN складаються з таких частин:

Частина

Опис

таблиця1, таблиця2

Імена таблиць, записи яких буде об’єднано.

поле1, поле2

Імена об’єднаних полів. Поля повинні мати однаковий тип даних, але не повинні мати однакові імена.

compare

Будь-який реляційний оператор порівняння: "=", "<", ">", "<=", ">=" або "<>"

Додаткові відомості про синтаксис зовнішнього об’єднання можна знайти в наведених нижче статтях Операції LEFT JOIN, RIGHT JOIN.

На початок сторінки

Відображення всіх рядків з обох таблиць і приєднання до них, де існує загальне значення

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

Щоб використовувати запит на об'єднання для виконання повного зовнішнього об'єднання, виконайте наведені нижче дії.

  1. Створіть запит, який має Ліве зовнішнє об'єднання в полі, яке потрібно використовувати для повного зовнішнього об'єднання.

  2. На вкладці Основне у групі Подання натисніть кнопку Вигляд і виберіть пункт Режим SQL.

  3. Натисніть сполучення клавіш CTRL + C, щоб скопіювати код SQL.

  4. Видаліть крапку з комою в кінці речення FROM, а потім натисніть клавішу ВВОДУ.

  5. Введіть UNION і натисніть клавішу Enter.

    Примітка.: Якщо ви використовуєте запит Union для виконання повного зовнішнього об'єднання, не використовуйте ключове слово "Усі".

  6. Натисніть клавіші CTRL + V, щоб вставити код SQL, скопійований на кроці 3.

  7. У коді, який ви вставили, змініть ліву приєднуватись до правого з'єднання.

  8. Видаліть крапку з комою в кінці другого речення FROM, а потім натисніть клавішу ВВОДУ.

  9. Додайте речення WHERE, що вказує на те, що значення поля JOIN – NULL у першій таблиці, що міститься в реченні FROM (ліва таблиця).

    Наприклад, якщо речення FROM має такий вигляд:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Ви додали наступне речення WHERE:

    ДЕ Products.ID – NULL

  10. Введіть крапку з комою (;) у кінці речення WHERE вкажіть кінець запиту на об'єднання.

  11. На вкладці Конструктор у групі Результати натисніть кнопку Запуск.

Перехресні об'єднання

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

Навіщо потрібно використовувати перехресне об’єднання?

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

Як я можу використовувати перехресне об’єднання?

Перехресне об'єднання створюється щоразу, коли ви включаєте таблиці або запити в запиті, і не створюйте принаймні один явний стик для кожної таблиці або запиту. Програма Access об'єднує кожний рядок кожної таблиці або запиту, який не приєднується до будь-якої іншої таблиці або запиту до будь-якого іншого рядка результатів. Зверніть увагу на сценарій знижки від попереднього абзацу. Припустимо, у вас є 91 клієнт, і ви хочете подивитися на п’ять можливих варіантів знижки. Перехресне об'єднання – це 455 рядків (продукт 91 і 5).

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

Випадкове перехресні об’єднання в поданні конструктора запиту
У поданні конструктора запиту ненавмисне перехресне об'єднання.

1. поля, що кружляли, слід приєднуватись один до одного.

Випадковий векторний добуток
Для перехресного продукту повернуто ненавмисне перехресне об'єднання, зображеного вище.

1. Зверніть увагу на дуже велику кількість записів.

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

1. Зверніть увагу, що кількість записів більша за менші.

На початок сторінки

Об'єднання таблиць на основі нерівності значень полів

Об’єднання не повинні бути основані на рівності полів об’єднання. Об’єднання може бути засноване на будь-якому операторі порівняння, такому як більше (>), менше (<) або не дорівнює (<>). Об’єднання, які не засновані на рівності, називають порівняльним об’єднанням.

Якщо ви хочете об’єднати рядки з двох джерел даних на основі значень нееквівалентних полів, можна використати порівняльне об’єднання. Як правило, порівняльне об’єднання засноване на операторах порівняння більше (>), менше (<), більше або дорівнює (>=), або менше або дорівнює (<=). Порівняльне об’єднання, яке засноване на операторі не дорівнює (<>) може повернути майже стільки ж рядків, що й перехресне об’єднання, і результати можуть бути складними для інтерпретації.

Як можна використовувати порівняльне об’єднання?

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

Видалення об’єднання

Якщо Access автоматично створює небажане об’єднання, або якщо ви помилково створюєте об’єднання – наприклад, об’єднання між двома полями, які містять різнорідні типи даних – ви можете видалити об’єднання.

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

  2. Натисніть клавішу Delete.

–або–

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

На початок сторінки

Див. також

Додавання записів до таблиці за допомогою запиту на додавання

Об'єднання результатів кількох обраних запитів за допомогою запиту на об'єднання

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

Створення, редагування або видалення зв'язку

Удосконалення навичок роботи з Office
Ознайомтеся з навчальними матеріалами
Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×