Редактиране на SQL команди за уточняване на резултати от заявка
Applies ToAccess за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Забележка:  Тази статия не се отнася за уеб приложенията на Access – вид база данни, която проектирате с Access и публикувате онлайн.

В тази статия

Създаване на команда за избиране

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

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

Следната команда за избиране иска от Access до получи информация от колоните "Имейл адрес" и "Фирма" от таблицата "Контакти" къде се намира "Сиатъл" в колоната "Град".

Раздел за обекти SQL, показващ команда SELECT

Горната заявка има три клаузи SELECT, FROM и WHERE.

1. Клаузата SELECT: изброява колоните, съдържащи данните, които искате да използвате, и има оператор (SELECT), следван от два идентификатора (имейл адрес и фирма). Ако някой идентификатор съдържа интервали или специални символи (например "имейл адрес"), поставете идентификатора в квадратни скоби.

2. Клауза FROM: идентифицира таблицата източник. В този пример тя има оператор (FROM), следван от идентификатор ("Контакти").

3. Клауза WHERE: незадължителна клауза. Примерът съдържа оператор (WHERE) следван от израз (Град="Сиатъл").

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

Ето списък с общи SQL клаузи:

SQL клауза

Какво прави

Задължително ли е ?

SELECT

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

Да

FROM

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

Да

WHERE

Задава критерии за полета, които трябва да бъдат изпълнени от всеки запис, за да бъде включен в резултатите.

Не

ORDER BY

Задава как да се сортират резултатите.

Не

GROUP BY

В SQL команда, съдържаща агрегатни функции, съдържа списък на полета, които не са обобщени в клаузата SELECT.

Само ако има такива полета

HAVING

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

Не

Всяка SQL клауза е съставена от условия. Ето списък с някои общи SQL условия.

Елемент на SQL

Определение

Пример

идентификатор

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

[Имейл адрес] и фирма

оператор

Ключова дума, която представя действие или променя действие.

AS

константа

Стойност, която не се променя, например число или NULL.

42

израз

Комбинация на идентификатори, оператори, константи и функции, които дават като резултат единична стойност.

>= Продукти.[Единична цена]

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

Персонализиране на клаузата SELECT

Персонализиране

Пример

За да видите само различните стойности.

Използвайте ключовата дума DISTINCT във вашата клауза SELECT.

Ако например вашите клиенти са от няколко различни клона и някои имат един и същ телефонен номер, и вие искате да видите телефонния номер в списъка само веднъж, вашата клауза SELECT би била такава:

SELECT DISTINCT [txtCustomerPhone] 

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

Използвайте във вашата клауза SELECT оператора AS (ключова дума, която представлява действие или модифицира действие) с псевдоним на поле. Псевдонимът на поле е име, което вие присвоявате на едно поле, за да направите резултатите по-лесни за четене.

SELECT [txtCustPhone] AS [Customer Phone]

Персонализиране на клаузата FROM

Персонализиране

Пример

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

За да изберете данни от две полета с име ID, едното от които идва от таблицата tblCustomer, а другото от таблицата tblOrder:

SELECT [tblCustomer].[ID],        [tblOrder].[ID]

Използвайте оператора AS, за да дефинирате псевдоними на таблици в клаузата FROM:

FROM [tblCustomer] AS [C],      [tblOrder] AS [O] 

Можете след това да използвате тези псевдоними на таблици в клаузата SELECT както следва:

SELECT [C].[ID],        [O].[ID]

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

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

Ето как може да изглежда клаузата FROM:

FROM [tblCustomer] INNER JOIN [tblOrder]ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID] 

За използването на съединения

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

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

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 = table2.field2

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

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

Персонализиране на клаузата WHERE

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

Пример за това как можете да персонализирате основната клауза WHERE е да ограничите резултатите на заявката: да предположим,че искате да намерите телефонния номер на клиент, но си спомняте само неговото фамилно име, например Bagel. В този пример фамилните имена се съхраняват в полето LastName, така че синтаксисът на SQL би бил:

WHERE [LastName]='Bagel'

Използвайте клаузата WHERE и за да комбинирате източници на данни за колони, които имат съвпадащи данни, но от различни типове. Това се оказва полезно, тъй като не можете да създавате съединение между полета, които имат различни типове данни. Използвайте едното поле като критерий за другото поле с ключовата дума LIKE. Ако например искате да използвате данни от таблицата "Активи" и таблицата "Служители" само когато типът на актива в полето "Тип активи" на таблицата "Активи" съдържа числото 3 в полето "Количество" на таблицата "Служители", ето как би изглеждала вашата клауза WHERE:

WHERE field1 LIKE field2

Важно:  Не можете да зададете критерии за поле, използвано с агрегатна функция в клауза WHERE. Вместо това използвайте клауза HAVING, за да зададете критерии за агрегатни полета.

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

Персонализиране с оператора UNION

Използвайте оператора UNION, когато искате да видите комбиниран изглед на резултати от няколко подобни заявки за избиране. Ако например вашата база данни има таблица "Продукти" и таблица "Услуги" и всяка от тях има три полета: ексклузивна_оферта или продукт или услуга, цена, гаранционно_обслужване или гаранция. Въпреки че таблицата "Продукти" съхранява информация за гаранционно обслужване, а таблицата "Услуги" съхранява информация за гаранция, базовата информация е същата. Можете да използвате заявка за обединение, за да комбинирате трите полета от двете таблици така:

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

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

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

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

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

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

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