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

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

Увага! : Цю статтю перекладено за допомогою служби машинного перекладу; див. застереження. Версію цієї статті англійською мовою див. тут для отримання довідки.

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

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

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

У цій статті

Огляд

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

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

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

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

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

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

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

Огляд

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Частина

Опис

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

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

поле1, поле2

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

порівняння

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Якщо ви створюєте запиту, який містить LEFT JOIN і ВНУТРІШНІМ ОБ'ЄДНАННЯМ, Access не може бути можливість визначити, яке об'єднання операцію, щоб виконувати в першу чергу. Оскільки результати відрізняються залежно від того, чи лівого зв'язку або внутрішнє об'єднання здійснюється вперше, у програмі Access відобразиться повідомлення про помилку:

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

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

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

FROM Таблиця1 [вліво | Приєднатися до ПРАВОГО] таблиця2
на table1.field1 порівняння table2.field2

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

Частина

Опис

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

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

поле1, поле2

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

порівняння

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

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

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

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

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

Щоб виконати повне зовнішнє з'єднання за допомогою запиту на об'єднання:

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

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

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

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

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

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

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

  7. У вставленому коді замініть параметр LEFT JOIN (ліве з’єднання) на RIGHT JOIN (праве з’єднання).

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

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

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

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

    Додайте таке речення WHERE:

    WHERE Products.ID IS NULL

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

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

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

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

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

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

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

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

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

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

1 у кружку полів повинні бути з'єднані між собою.

Випадковий векторний добуток
Векторний добуток повернуті випадковий перехресне об'єднання описаний вище.

1. Примітка дуже великої кількості записів.

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

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

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

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

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

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

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

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

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

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

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

  2. Натисніть кнопку Видалити.

-або-

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

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

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

Див. також

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

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

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

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

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

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

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

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

×