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

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

Важно : Тази статия е преведена машинно – вижте отказа от отговорност. Английската версия на тази статия за справка можете да намерите тук .

Да предположим, че вашата база данни на Access има две несвързани таблици – една, която съхранява данните на клиентите и друг, който съхранява данни за доставчици – и двете таблици имат поле за информация за контакт. Искате да видите информацията за контакти от двете таблици в един изглед. За да направите това, първо да създадете заявка за избиране за всяка таблица за извличане на информацията за контакта и след това да комбинирате тези резултати чрез създаване на заявка за обединение.

Забележка : Съдържанието в тази статия е предназначена за използване с настолни бази данни на Access. Не можете да създадете или да използвате заявка за обединение в Access уеб бази данни или уеб приложения на Access.

Нуждаете се от припомняне на създаването на основни заявки за избиране? Вижте Създаване на проста заявка за избиране.

Първо, ето какво трябва да знаете за създаването на заявка за обединение:

  • Заявките за избиране, които комбинирате в една заявка за обединение, трябва да имат еднакъв брой изходящи полета, в една и съща последователност, с еднакви или съвместими типове данни. Когато изпълните заявка за обединение, данните от всеки набор съответни полета се комбинират в едно изходящо поле, така че резултатът от заявката да има същия брой полета като всяка от командите SELECT.

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

Стъпка 1:Създаване на заявки за избиране

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

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

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

  3. Затворете диалоговия прозорец Показване на таблица.

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

  5. Ако желаете добавете критерии към вашите полета като въведете подходящо изрази в реда критерии на мрежата с полета.

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

  7. Превключете заявката в изглед за проектиране.

  8. Запишете заявката за избиране и я оставете отворена.

  9. Повторете тази процедура за всяка заявка за избиране, която искате да комбинирате.

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

Стъпка 2: Комбиниране на заявките за избиране

В тази стъпка можете да създадете заявка за обединение с помощта на SQL отчети. (За повече информация вижте раздела SQL синтаксис по-долу.)

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

  2. Затворете диалоговия прозорец Показване на таблица.

  3. В раздела Проектиране, в групата Заявка щракнете върху Обединение.

Access скрива прозореца за проектиране на заявки и показва раздела за обекти в SQL изглед. На този етап разделът за обекти в SQL изглед е празен.

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

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

  3. Копирайте SQL командата за заявката за избиране. Щракнете върху раздела за заявка за обединение, която започнахте да създавате в стъпка 1.

  4. Поставете SQL командата за заявката за избиране в раздела за обекти "SQL изглед" на заявка за обединение.

  5. Изтрийте знака точка и запетая (;) в края на SQL командата за заявка за избиране.

  6. Натиснете Enter, за да преместите курсора един ред надолу и след това въведете UNION на новия ред.

  7. Щракнете върху раздела за следващата заявка за избиране, която искате да комбинирате в заявка за обединение.

  8. Повтаряйте стъпките от 5 до 10, докато не копирате и поставите всички SQL команди за заявки за избиране в прозореца за SQL изглед на заявката за обединение. Не изтривайте знака точка и запетая и не въвеждайте нищо след SQL командата за последната заявка за избиране.

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

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

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

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

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

    Ако например една команда за избиране извлича полета от таблица с име "Продукти", а друга команда за избиране извлича полета от таблица с име "Услуги", добавете низа "Продукт" като поле в края на първата команда и "Услуга" в края на втората команда. Можете също да присвоите псевдоним на поле (например "тип") на низовете с помощта на ключовата дума AS, както е показано в следния пример:

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

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

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

  • Броят, типовете данни и подреждането на полетата в заявките за избиране трябва да си съответстват. Можете да използвате изрази, например изчисления или подзаявки, за да постигнете съответствието.

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

Използване на резултатите от заявка за обединение за създаване на нова таблица

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

  1. Създаване и записване на заявка за обединение.

  2. В раздела Създаване, в групата Заявки щракнете върху Проектиране на заявки.

  3. В диалоговия прозорец Показване на таблица щракнете върху раздела Заявки.

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

    Забележка : Ако видите предупреждение относно защитата в лентата за съобщения, заявките за действие може да са забранени. За да разрешите заявките за действие, щракнете върху Разрешаване на съдържание в лентата за съобщения.

  5. В таблицата за проектиране на заявки, в раздела за обекти на вашата заявка за обединение, щракнете двукратно върху звездичката (*), за да използвате всички полета на заявката за обединение за създаването на нова таблица.

  6. В раздела Структура, в групата Тип на заявката щракнете върху Създаване на таблица.

  7. В диалоговия прозорец Създаване на таблица въведете име за новата таблица.

  8. Ако желаете, можете да зададете друга база данни, в която да създадете таблицата.

  9. Щракнете върху OK.

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

Използване на заявка за обединение за извършване на пълно външно съединение

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

  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. В раздела Структура, в групата Резултати щракнете върху Изпълни.
    Резултатите от вашата заявка за обединение се показват в изглед на лист с данни.

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

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

Изисквания и SQL синтаксис за заявка за обединение

Някои изисквания за заявка за обединение

  • Заявките за избиране, които комбинирате в заявка за обединение, трябва да имат един и същ брой изходни полета, в една и съща последователност, с едни и същи или съвместими типове данни. Когато изпълните заявка за обединение, данните от всеки набор от съответните полета се комбинират в едно изходно поле, така че изходните данни от заявката имат същия брой полета като всяка от командите за избиране.

    Забележка : За целите на заявките за обединение данните от тип Number и Text са съвместими.

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

SQL синтаксис на заявка за обединение

В заявка за обединение всяка заявка за избиране (наречена също команда SELECT) има следните клаузи:

Клауза

Съдържа списък с...

SELECT

полета, съдържащи данните, които искате да извлечете.

FROM

таблици, съдържащи тези полета.

Незадължително WHERE

критерии за тези полета.

Командите SELECT се комбинират с помощта на ключовата дума UNION.

Базовият SQL синтаксис за заявка за обединение е както следва:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Нека например вашата база данни да има таблица с име "Продукти" и друга таблица с име "Услуги", като и двете таблици имат полета, съдържащи името на продукта или услугата, цената, наличие на гаранция или залог и дали предлагате продукта или услугата ексклузивно. Въпреки че таблицата "Продукти" съхранява информация за гаранция, а таблицата "Услуги" съхранява информация за залог, базовата информация е същата (дали конкретен продукт или услуга идва с обещания за качество). За да комбинирате четирите полета от двете таблици, можете да използвате заявка за обединение, например следната:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Да разгледаме горния пример за синтаксис ред по ред:

Синтаксис

Обяснение

Допълнителна информация

SELECT име, цена, налична_гаранция, ексклузивна_оферта

Първа клауза SELECT

SELECT е последвана от списък с идентификатори, показващи полетата, от които искате да извлечете данни.

Клаузата SELECT трябва да съдържа списък с поне едно поле.

Тази клауза SELECT съдържа идентификаторите на полетата име, цена, налична_гаранция и ексклузивна_оферта.

FROM Продукти

Първа клауза FROM

Клаузата FROM следва клаузата SELECT, а те заедно формират базова команда SELECT.

FROM е последвана от списък с идентификатори, които показват кои таблици съдържат полетата, изброени в клаузата SELECT.

Клаузата FROM трябва да съдържа списък с поне една таблица.

Тази клауза FROM съдържа идентификатора на таблицата Продукти.

UNION ALL

Ключовата дума UNION и незадължителната ключова дума ALL

Резултатите от командата SELECT, която предшества UNION, са комбинирани с резултатите от командата SELECT, която следва UNION.

Когато използвате ключовата дума ALL, дублираните редове не се премахват от обединението:

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

Използвайте ключовата дума ALL, ако е изпълнено някое от следните условия:

  • Уверени сте, че заявките за избиране няма да създадат дублирани редове.

  • Няма значение дали в резултатите има дублирани редове.

  • Искате да видите дублираните редове.

SELECT име, цена, налична_гаранция, ексклузивна_оферта

Втора клауза SELECT

Някои правила:

  • Втората клауза SELECT трябва да има същия брой полета като първата клауза SELECT.

  • Полетата, които споделят общи данни, трябва да се показват в клаузата в една и съща последователност.

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

Забележка : Имената на полетата в изхода на заявка за обединение са от първата клауза SELECT. Затова в примера данните от полето "налична_гаранция" и от полето "наличен_залог" са наименувани "налична_гаранция" в изходните данни от заявката.

FROM Услуги

Втора клауза FROM

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

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

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

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

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

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

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

×