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

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

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

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

Тази статия обсъжда различните типове съединение и ви показва как да ги използвате в заявка. По подразбиране присъединяване автоматично се създава, ако вече има релация между два данни източници, които използвате в заявка. Присъединяване също се създава, ако има полета, които ясно съответстват помежду си. Можете да изтриете автоматично създадени съединение. Тази статия предоставя основна информация за релации на таблици, включително как да създадете такъв.

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

В тази статия

Общ преглед

Типове съединения

Показване на редове, където съществува обща стойност в двете Съединени таблици

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

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

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

Присъединете се към таблици на базата на неравенство на стойностите на полетата

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

Общ преглед

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

Когато добавяте таблици към заявка, Access създава съединения, които се базират на релации, които са дефинирани между таблиците. Можете ръчно да създадете съединения в заявки, дори ако те не представляват релации, които вече са дефинирани. Ако използвате други заявки (вместо или в допълнение към таблици) като източници на данни за заявка, можете да създадете съединения между източник на заявки, както и между тези заявки и всички таблици, които можете да използвате като източници на данни.

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

Има четири основни типа съединения: вътрешни съединения, външни съединения, кръстосано съединения и неравенство. Тази статия изследва всеки тип съединение, можете да използвате, защо използвате всеки тип и как да създадете съединения.

Съединенията са за заявките това, което са релациите за таблиците: индикация как данните в два източника могат да се комбинират на базата на стойности на данни, които са общи за тях. Това е илюстрация на съединение в изглед на проект на заявка със свойствата на съединението, отворени в диалогов прозорец:

Полето ''Свойства на съединението''.

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

Съединенията понякога са насочени. Тази област на диалоговия прозорец ви показва кои са таблиците в съединението и кои полета са използвани за съединение на таблиците.

Тази област определя типа на съединението: опция 1 е вътрешно съединение, 2 е ляво външно съединение, а 3 е дясно външно съединение.

Могат да се използват полета от двете таблици, като данните, които се отнасят за дадена задача, се показват от всяка от тях. При вътрешното съединение не се включват други данни. При външното съединение в резултата от заявката се включват и несвързани записи от една таблица.

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

Типове съединения

Има четири основни типа съединения: вътрешни съединения, външни съединения, кръстосани съединения и съединения при неравенство. Кръстосаното съединение и съединението при неравенство са разширени типове съединения и се използват рядко, но трябва да знаете за тях, за да имате пълна представа как работят съединенията.

Вътрешни съединения: само свързани данни, комбинирани от двете таблици

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

Външни съединения: всички свързани данни, комбинирани правилно, плюс всички останали записи от едната таблица

Външното съединение е като вътрешното, но добавя останалите редове от едната от таблиците. Външните съединения са насочени: лявото външно съединение съдържа всички записи от лявата таблица – първата таблица в съединението, а дясното външно съединение съдържа всички записи от дясната таблицата – втората таблица в съединението.

Пълни външни съединения: всички данни, комбинирани където е приложимо

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

Кръстосано съединение: всички данни, комбинирани по всеки възможен начин

Най-често кръстосаното съединение е страничен ефект в случая, когато добавите две таблици към заявка и след това забравите да ги съедините. Access тълкува това като желание да видите всеки запис от едната таблица комбиниран с всеки запис от другата таблица – всяка възможна комбинация на записи. Тъй като няма данни, които могат да се комбинират, този вид съединение рядко създава полезни резултати. Но има няколко случая, когато кръстосаното съединение е точно това, което ви трябва.

Съединение при неравенство: като обикновеното съединение, но използва различно сравнение, за да комбинира редове

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

Показване на редове, където съществува обща стойност в двете Съединени таблици

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

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

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

В повечето случаи не е необходимо да правите нищо, за да използвате вътрешно съединение. Ако таблиците които добавяте към заявката, вече имат релации, Access автоматично създава вътрешно съединение между всяка двойка свързани таблици, когато добавя таблиците. Ако цялост на връзките е зададена, Access показва също "1" над линията на съединение, за да покаже коя таблица е от страната "един" на релация "един към много", и символа за безкрайност (), за да покаже коя таблица е от страната "много".

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

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

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

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

ОТ таблица1 INNER JOIN таблица2 ON таблица1.поле1 сравняване table2.поле2

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

Част

Описание

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

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

поле1, поле2

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

сравняване на

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ОТ таблица1 [LEFT | ДЕСЕН] съединение таблица2
на table1.field1 сравняване таблица2.поле2

Операциите 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, която задава, че стойността на съединеното поле е 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. В кръстосано съединение всеки ред от една таблица е комбинирано с всеки ред от друга таблица, което води до това, което се нарича кръстосано произведение или декартово произведение. Всеки път, когато изпълните заявка, която съдържа таблици, които не са изрично Съединени, кръстосано произведение е резултат. Кръстосано съединения са обикновено неволно, но има случаи, където те могат да бъдат полезни.

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

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

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

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

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

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

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

Неволно зададено кръстосано произведение
Кръстосано произведение, върнати от неволно зададено кръстосано съединение, описани по-горе.

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

Резултати от коригираната заявка
Резултатите след създаването на правилната съединение.

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

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

Присъединете се към таблици на базата на неравенство на стойностите на полетата

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

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

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

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

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

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

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

  2. Натиснете Изтриване.

-или-

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

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

Вж. също

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

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

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

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

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

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

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

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

×