Редактирование инструкций SQL для уточнения результатов запроса

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Если ваши запросы недостаточно трудоемки, добавление некоторых простых инструкций SQL поможет сосредоточиться на результатах. Давайте рассмотрим несколько типов инструкций SQL и предложения или части, которые можно изменить, чтобы получить нужные результаты.

В этой статье

Создание оператора Select

Инструкция SQL select содержит от двух до трех предложений. Предложение SELECT сообщает базе данных, где искать данные, и просит базу данных вернуть определенный результат.

Примечание

Операторы SELECT всегда оканчиваются точкой с запятой (;) либо в конце последнего предложения, либо на отдельной строке в конце SQL-оператора.

Следующая инструкция select предлагает Access получить сведения из столбцов "Адрес электронной почты" и "Организация" из таблицы "Контакты", в частности из тех мест, где в столбце "Город" встречается слово "Москва".

Вкладка объекта SQL с инструкцией SELECT

Указанный выше запрос содержит три предложения: SELECT, FROM и WHERE.

1. Предложение SELECT выводит список столбцов, содержащих данные, которые необходимо использовать, и содержит оператор (SELECT), за которым следуют два идентификатора ("E-mail Address" и "Company"). Если идентификатор содержит пробелы или специальные символы (например, "Адрес электронной почты"), введите его в квадратные скобки.

2. Предложение FROM определяет исходную таблицу. В этом примере она содержит оператор (FROM), за которым следует идентификатор (Contacts).

3. Предложение WHERE является необязательным. В примере есть оператор (WHERE), за которым следует выражение (City="Seattle").

Дополнительные сведения о запросах на выборку см. в статье Создание простого запроса на выборку.

Вот список распространенных предложений 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]
Изменение способа отображения идентификатора в режиме таблицы для повышения удобочитаемости.
Используйте оператор AS (ключевое слово, представляющее действие или изменяющее действие) с псевдонимом поля в предложении SELECT. Псевдоним поля — это имя, которое присваивается полю для удобства чтения результатов.
SELECT [txtCustPhone] AS [Customer Phone]

Настройка предложения FROM

Настройка Пример
Можно использовать псевдоним таблицы или другое имя, назначенное таблице в инструкции SELECT. Псевдоним таблицы удобен, если имя таблицы длинное, особенно если есть несколько полей из разных таблиц с одинаковыми именами. Чтобы выбрать данные из двух полей с именами ID, одно из которых взято из таблицы tblCustomer, а другое — из таблицы tblOrder:
SELECT [tblCustomer]. [ИД],
[tblOrder]. [ИД]
Используйте оператор AS, чтобы определить псевдонимы таблиц в предложении FROM:
FROM [tblCustomer] AS [C],
[tblOrder] AS [O]
Псевдонимы таблицы можно использовать в предложении SELECT следующим образом:SELECT [C]. [ИД],
[О]. [ИД]
С помощью соединений можно объединять пары записей из двух источников данных в один результат или указывать, следует ли включать записи из любой таблицы, если в связанной таблице нет соответствующей записи.
Связывайте таблицы таким образом, чтобы запрос объединял элементы таблиц и исключал элементы при отсутствии соответствующей записи в другой таблице
Вот как может выглядеть предложение FROM:FROM [tblCustomer]
ВНУТРЕННЕЕ СОЕДИНЕНИЕ [tblOrder]
ON [tblCustomer]. [CustomerID]=[tblOrder]. [ИД клиента]

Сведения об использовании соединений

Существует два типа соединений: внутренние и внешние. Внутренние соединения чаще используются в запросах. При выполнении запроса с внутренним объединением отображаются только те элементы, для которых в обеих связанных таблицах есть общее значение.

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

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

Дополнительные сведения об использовании соединений в запросе см. в статье Объединение таблиц и запросов.

К началу страницы

Настройка предложения WHERE

Предложение WHERE содержит условия, позволяющие ограничить количество элементов, возвращаемых в запросе. Ознакомьтесь с примерами условий запроса и узнайте, как они работают.

Примером того, как вы можете настроить базовое предложение WHERE, является ограничение результатов запроса; Предположим, что вы хотите найти номер телефона клиента и можете вспомнить только его фамилию как Бейгл. В этом примере фамилии хранятся в поле LastName, поэтому синтаксис SQL будет выглядеть следующим образом:

WHERE [LastName]='Bagel'

Предложение WHERE также используется для объединения источников данных для столбцов с одинаковыми, но разными типами данных. Это удобно, так как невозможно создать соединение между полями с разными типами данных. Используйте одно поле в качестве условия для другого поля с ключевым словом LIKE. Например, если вы хотите использовать данные из таблиц "Активы" и "Сотрудники" только в том случае, если тип ресурса в поле "Тип актива" таблицы "Ресурсы" имеет цифру 3 в поле "Количество" таблицы "Сотрудники", вот как будет выглядеть предложение WHERE:

WHERE field1 LIKE field2

Важно

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

К началу страницы

Настройка с помощью оператора UNION

Оператор UNION используется, если требуется просмотреть объединенное представление результатов нескольких похожих запросов на выборку. Например, если в базе данных есть таблицы "Товары" и "Услуги" и обе они содержат три поля: "Эксклюзивное предложение" или "Продукт или услуга", "Цена", "Гарантия" или "Гарантия". Хотя в таблице "Продукты" хранится информация о гарантии, а в таблице "Службы" — сведения о гарантии, основная информация одинакова. Чтобы объединить три поля из двух таблиц, используйте запрос на объединение следующим образом:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer 
FROM Services;

При выполнении запроса данные из каждого набора соответствующих полей объединяются в одно выходное поле. Чтобы включить в результаты повторяющиеся строки, используйте оператор ALL.

Примечание

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

Дополнительные сведения о запросах на объединение см. в статье Использование запроса на объединение для просмотра единого результата из нескольких запросов.

К началу страницы