Это статья из цикла статей о языке SQL для Access. В ней описано предложение FROM и приведены примеры, поясняющие различные методы, используемые при его составлении.
В инструкции SELECT источники данных указываются в предложении FROM. Предложение FROM также может содержать операцию JOIN. Операция JOIN используется для сопоставления и объединения данных из двух источников данных, таких как две таблицы или таблицы и запроса.
Общие сведения о языке SQL для Access см. в статье Access SQL. Основные понятия, лексика и синтаксис.
В этой статье
Указание источников данных
В предложении FROM инструкции SELECT указываются таблицы или запросы, в которых содержатся данные, используемые предложением SELECT.
Предположим, что вы хотите узнать телефонный номер клиента. Пусть таблица, которая содержит поле с этими данными, называется tblCustomer, тогда предложение FROM будет выглядеть следующим образом:
FROM tblCustomer
Имя можно заключить в квадратные скобки. Если имя не содержит пробелов или специальных знаков (например, знаков препинания), скобки можно не использовать. Если имя содержит пробелы или специальные знаки, скобки необходимы.
Совет: Имя, содержащее пробелы, проще читать и может сэкономить время при разработке форм и отчетов, но в конечном итоге может привести к тому, что при написании инструкций SQL вы будете вводить больше. Этот факт следует учитывать при присвоении имен объектам в базе данных Access.
Использование псевдонимов источников данных
Для обращения к таблице в инструкции SELECT можно использовать ее псевдоним, указав его в предложении FROM. Псевдоним таблицы — это имя, назначенное источнику данных в запросе при использовании выражения в качестве источника данных или для упрощения ввода и прочтения инструкции SQL. Такая возможность полезна, если имя источника данных слишком длинное или его трудно вводить, особенно если есть несколько полей с одинаковыми именами из разных таблиц.
Например, если необходимо выбрать данные из двух полей с именем ID, одно из которых содержится в таблице tblCustomer, а другое — в таблице tblOrder, предложение SELECT может выглядеть следующим образом:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
Используя псевдонимы таблиц в предложении FROM, можно упростить ввод запроса. Предложение FROM с псевдонимами таблиц может выглядеть следующим образом:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
Эти псевдонимы таблиц можно использовать в предложении SELECT следующим образом:
SELECT [C].[ID], [O].[ID]
Примечание: При использовании псевдонимов на таблицу можно ссылаться в инструкции SQL как по псевдониму, так и по ее полному имени.
Объединение связанных данных
Если в результатах запроса необходимо объединить пары записей из двух источников данных, можно выполнить объединение. Объединение — это операция SQL, указывающая способ связи двух источников данных и необходимость включения в результаты данных из одного источника в случае отсутствия соответствующих данных в другом.
Для объединения данных из двух источников следует выполнить операцию объединения по общему полю. Если значения этого поля совпадают, данные записей в результатах запроса объединяются.
Помимо объединения данных операция объединения также используется для указания того, необходимо ли включать в результаты записи из какой-либо таблицы, если в связанной с ней таблице отсутствует соответствующая запись.
Предположим, например, что в запросе необходимо использовать данные из двух таблиц — tblCustomer и tblOrder. Обе таблицы содержат поле CustomerID, определяющее клиента. Каждая запись в таблице tblCustomer может иметь одну или несколько соответствующих записей в таблице tblOrder , а соответствующие значения определяются значениями в поле CustomerID.
Если вы хотите объединить таблицы таким образом, чтобы в запросе объединялись записи из этих таблиц за исключением тех записей, для которых отсутствуют соответствующие записи в одной из таблиц, предложение FROM может выглядеть следующим образом (разрыв строки добавлен ради удобства чтения):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
В Access оператор объединения указывается в предложении FROM инструкции SELECT. Существует два типа объединений — внутренние и внешние. Они описаны в следующих разделах.
Внутренние соединения
Внутреннее объединение — это самый распространенный тип объединения. При выполнении запроса со внутренним объединением в результат включаются только те записи, которые имеют одинаковые значения в обеих объединяемых таблицах.
Внутреннее объединение имеет следующий синтаксис (разрыв строки добавлен ради удобства чтения):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
В приведенной ниже таблице представлены различные компоненты операции INNER JOIN.
Компонент |
Описание |
таблица1, таблица2 |
Имена таблиц, содержащих объединяемые записи. |
поле1, поле2 |
Имена объединенных полей. Если они не являются числовыми, поля должны иметь один и тот же тип данных и содержать данные одного типа, но они не должны иметь одно и то же имя. |
compopr |
Любой оператор сравнения: (=, <, >, <=, >= или <>) |
Внешние соединения
Внешнее объединение похоже на внутреннее, потому что оно указывает, как в запросе должны объединяться данные из двух источников. Отличие заключается в том, что оно также указывает, необходимо ли включать в результаты данные, в которых отсутствуют одинаковые значения. Внешнее объединение является направленным: вы можете указать, следует ли включить ли в результаты все записи из первого источника данных для объединения (левое объединение) или все записи из второго источника данных (правое объединение).
Внешнее объединение имеет следующий синтаксис:
FROM таблица1 [ LEFT | RIGHT ] JOIN таблица2
ON таблица1.поле1оператор_сравнения таблица2.поле2В приведенной ниже таблице указаны различные компоненты операций LEFT JOIN и RIGHT JOIN.
Компонент |
Описание |
таблица1, таблица2 |
Имена таблиц, содержащих объединяемые записи. |
поле1, поле2 |
Имена объединенных полей. Поля должны быть одинаковыми тип данных и содержать данные одного типа, но они не должны иметь одно и то же имя. |
compopr |
Любой оператор сравнения: (=, <, >, <=, >= или <>) |
Дополнительные сведения об объединениях см. в статье Объединение таблиц и запросов.