Съединяване на таблици и заявки

Съединяване на таблици и заявки

Забележка: Бихме искали да ви осигурим най-новото помощно съдържание възможно най-бързо на вашия собствен език. Тази страница е преведена чрез автоматизация и може да съдържа граматически грешки и несъответствия. Нашата цел е това съдържание да ви бъде полезно. Можете ли да ни кажете дали информацията е била полезна за вас, в дъното на тази страница? Ето статията на английски за бърза справка.

Когато включите множество източници на данни в заявка на 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

Имена на полетата, които са съединени. Ако не са числови, полетата трябва да бъдат от един и същ тип данни и да съдържат данни от еднакъв вид, но не е необходимо да имат едни и същи имена.

сравнение

Всеки релационен оператор за сравнение: "=," "<," ">," "<=," ">=" или "<>."

За повече информация относно синтаксиса на функцията за вътрешно съединение вижте темата вътрешна операция за съединение.

Най-горе на страницата

Показване на всички редове от едната таблица и съответните редове от другата таблица

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

Външните съединения могат да бъдат ляво външни съединения или могат да бъдат десни външни съединения. В ляво външно съединение заявката включва всички редове от първата таблица в клаузата SQL командата FROM и само тези редове от другата таблица, където свързващо поле съдържа стойности, които са общи за двете таблици. В дясно външно съединение заявката включва всички редове от втората таблица в клаузата SQL командата FROM и само тези редове от другата таблица, където свързващо поле съдържа стойности, които са общи за двете таблици.

Забележка: Можете лесно да разберете коя таблица е лявата таблица или правилната таблица в дадено съединение, като щракнете двукратно върху съединението и след това потърсите в диалоговия прозорец свойства на съединението. Можете също да превключите към SQL изглед и след това да изследвате клаузата FROM.

Тъй като някои редове от едната страна на външното съединение няма да имат съответни редове от другата таблица, някои от полетата, върнати в резултатите от заявката, от тази друга таблица ще бъдат празни, когато редовете не съответстват.

Как да използвам външно съединение?

Създавате външно съединение чрез модифициране на съществуващо вътрешно съединение. Ако няма вътрешно съединение, можете да създадете такъв и след това да го промените на външно съединение.

Променяне на вътрешно съединение във външно съединение

  1. В изглед за проектиране на заявки щракнете двукратно върху съединението, което искате да промените.

    Появява се диалоговият прозорец Свойства на съединението.

  2. В диалоговия прозорец свойства на съединението обърнете внимание на възможностите за избор в списъка до опцията 2 и опцията 3.

  3. Щракнете върху опцията, която искате да използвате, и след това щракнете върху OK.

  4. Access показва съединението и показва стрелка, която сочи от източника на данни, където всички редове ще бъдат включени в източника на данни, където само онези редове, които отговарят на условието за съединение, ще бъдат включени.

Нееднозначни външни съединения

Ако създавате заявка, която съдържа ляво съединение и вътрешно съединение, е възможно Access да не може да определи коя операция за съединение да се извърши първо. Тъй като резултатът е различен в зависимост от това дали лявото съединение, или вътрешното съединение се извършва първо, Access показва съобщение за грешка:

За да коригирате тази грешка, трябва да модифицирате заявката, така че да е ясно кое съединение да се извърши първо.

SQL синтаксис за външно съединение

Външните съединения се задават в SQL в клаузата FROM, както е показано по-долу:

ОТ таблица1 [Left | Отдясно] Присъединете се към таблица2
на таблица1. поле1 Сравнете таблица2. поле2

Операциите LEFT JOIN и RIGHT JOIN имат следните части:

Част

Описание

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

Имената на таблиците, от които се комбинират записи.

поле1, поле2

Имената на полетата, които се свързват. Полетата трябва да бъдат от един и същ тип данни и да съдържат данни от един и същ вид, но не е необходимо да имат едни и същи имена.

сравнение

Всеки релационен оператор за сравнение: "=," "<," ">," "<=," ">=" или "<>."

За повече информация относно синтаксиса на външното съединение вижте темата отляво съединение, правилните операции за съединение.

Най-горе на страницата

Показване на всички редове от таблиците и присъединяване към тях, където съществува обща стойност

Когато искате да покажете всички редове от две таблици и да се присъедините към тях на базата на общи стойности, можете да използвате пълно външно съединение. Access не поддържа изрично пълни външни съединения, но можете да постигнете същия ефект с помощта на заявка за обединение. Процедурата по-долу обяснява как да направите това, но ако искате повече информация за заявките за обединение, вижте раздела Вижте също .

За да използвате заявка за обединение, за да извършите пълно външно съединение:

  1. Създайте заявка, която има ляво външно съединение в полето, което искате да използвате за пълно външно съединение.

  2. В раздела Начало, в групата Изгледи щракнете върху Изглед, а след това щракнете върху SQL изглед.

  3. Натиснете CTRL + C, за да копирате SQL кода.

  4. Изтрийте точка и запетая в края на клаузата FROM и след това натиснете клавиша ENTER.

  5. Въведете UNION и натиснете ENTER.

    Забележка: Не използвайте ключовата дума ALL, когато използвате заявка за обединение, за да извършите пълно външно съединение.

  6. Натиснете CTRL + V, за да поставите SQL кода, който сте копирали в стъпка 3.

  7. В кода, който поставихте, променете Left JOIN , за да се присъединят надясно.

  8. Изтрийте точка и запетая в края на втората клауза FROM и след това натиснете клавиша ENTER.

  9. Добавете клауза WHERE, която задава, че стойността на полето за съединение е NULL в първата таблица, изброена в клаузата FROM (лявата таблица).

    Например, ако клаузата FROM е:

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

    Можете да добавите следната клауза WHERE:

    WHERE Products.ID IS NULL

  10. Въведете точка и запетая (;) в края на клаузата WHERE, за да означите края на заявката за обединение.

  11. В раздела Проектиране, в групата Резултати щракнете върху Изпълни.

Кръстосани съединения

Кръстосаните съединения се различават от вътрешните и външните съединения, тъй като те не са изрично представени в Access. Във кръстосано съединение всеки ред от една таблица е комбиниран с всеки ред от друга таблица, което води до това, което се нарича кръстосан продукт или декартов продукт. Всеки път, когато изпълнявате заявка, която съдържа таблици, които не са изрично Съединени, резултатът е кръстосан продукт. Крос съединение обикновено не е умишлено, но има случаи, в които те могат да бъдат полезни.

Защо да използвам кръстосано съединение?

Ако искате да прегледате всяка възможна комбинация от редове между две таблици или заявки, използвайте кръстосано съединение. Например да предположим, че вашата фирма е прекарала грандиозно години, а вие обмисляте даване на отстъпки на вашите клиенти. Можете да съставите заявка, която сумира покупките на всеки клиент, да създаде малка таблица, която има няколко възможни процента за отстъпки, и комбиниране на двете в друга заявка, която извършва кръстосано съединение. Можете да свършите със заявка, която показва набор от хипотетични отстъпки за всеки клиент.

Как да използвам кръстосано съединение?

Се създава кръстосано съединение по всяко време, когато включите таблици или заявки във вашата заявка, и не създавате поне едно изрично съединение за всяка таблица или заявка. Access комбинира всеки ред от всяка таблица или заявка, която не е изрично свързана с никоя друга таблица или заявка, към всеки ред в резултатите. Помислете за сценария на отстъпката от предходния абзац. Да предположим, че имате клиенти на 91 и искате да прегледате пет възможни процента за отстъпки. Вашият кръстосано съединение произвежда 455 редове (продукт от 91 и 5).

Както можете да си представите, неволните кръстосани съединения могат да създадат огромен брой редове в резултатите от заявката ви. Освен това тези резултати обикновено са безсмислени, тъй като ако наистина не възнамерявате да комбинирате всеки ред с всеки друг ред, повечето от комбинираните редове, които се показват в резултатите, няма да са смислени. И накрая, заявките, които използват непреднамерено кръстосани съединения, може да изминат много време, за да се изпълни.

Неволно зададено кръстосано съединение в режим на проектиране на заявки

1. оградените полета трябва да се присъединят един към друг.

Неволно зададено кръстосано произведение

1. Забележка много голям брой записи.

Резултати от коригираната заявка

1. имайте предвид, че броят на записите е много по-малък.

Най-горе на страницата

Съединяване на таблици на базата на неравенство на стойностите на полетата

Съединения не трябва да се основават на равностойността на Съединени полета. Съединение може да се базира на всеки оператор за сравнение, като например по-голямо от (>), по-малко от (<) или не е равно на (<>). Съединения, които не се базират на еквивалентност, се наричат неравностойни съединения.

Ако искате да комбинирате редовете с два източника на данни на базата на стойности на полета, които не са равни, използвате неравно съединение. Обикновено неравностойните съединения се основават на операторите по-големи от (>), по-малки от (<), по-големи или равни на (> =) или по-малки или равни на (< =) оператори за сравнение. Неравните съединения, които се базират на оператора "не е равно" (<>), могат да върнат почти толкова редове като кръстосани съединения и резултатите могат да бъдат трудни за интерпретиране.

Как да използвам неравномерно съединение?

Не се поддържат неравностойни съединения в изглед за проектиране. Ако искате да ги използвате, трябва да направите това с помощта на SQL изглед. Но можете да създадете съединение в изглед за проектиране, да превключите на SQL изглед, да намерите оператора EQUAL (=) и да го промените на оператора, който искате да използвате. След като направите това, можете да отворите заявката само в изглед за проектиране, ако първо да промените оператора за сравнение обратно на равно (=) в SQL изглед.

Изтриване на съединение

Ако Access автоматично създава съединение, което не ви трябва, или ако създавате съединение по погрешка – например съединение между две полета, които имат различни типове данни – можете да изтриете съединение.

  1. В мрежата за проектиране на заявки щракнете върху съединението, което искате да премахнете.

  2. Натиснете клавиша Delete.

-или-

  • В мрежата на заявката за проектиране щракнете с десния бутон върху съединението, което искате да премахнете, и след това щракнете върху Изтрий.

Най-горе на страницата

Вж. също

Добавяне на записи към таблица с помощта на заявка за добавяне

Комбиниране на резултати от няколко заявки за избиране с помощта на заявка за

Създаване на заявка въз основа на няколко таблици

Създаване, редактиране или изтриване на релация

Разширете уменията си в Office
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×