Операция UNION (Microsoft Access SQL)
Область применения: Access 2013, Office 2013
Создает запрос на объединение, выполняющий объединение результатов двух или более независимых запросов или таблиц.
Синтаксис
[ТАБЛИЦА] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]
Операция UNION состоит из следующих частей:
Часть |
Описание |
---|---|
query1-n |
Оператор SELECT, имя сохраненного запроса или имя сохраненной таблицы с предшествующим ключевым словом TABLE. |
Комментарии
Вы можно выполнить слияние результатов двух или более запросов, таблиц и операторов SELECT в любой последовательности в одной операции UNION. В приведенном ниже примере выполняется объединение существующей таблицы с именем New Accounts и оператора SELECT:
TABLE [New Accounts] UNION ALL
SELECT *
FROM Customers
WHERE OrderAmount > 1000;
По умолчанию не возвращаются повторяющиеся записи при использовании операции UNION; тем не менее, вы можете включить предикат ALL, чтобы гарантировать, что будут возвращаться все записи. Это также сокращает время выполнения запроса.
Все запросы в операции UNION должны запрашивать одинаковое количество полей; тем не менее, поля не должны иметь одинаковый размер или тип данных.
Используйте псевдонимы только в первой инструкции SELECT, так как они не учитываются во всех остальных. В предложении ORDER BY необходимо ссылаться на поля так, как они называются в первом операторе SELECT.
Примечание.
Пример
В этом примере показано получение названий и городов всех поставщиков и клиентов в Бразилии. В этом примере выполняется вызов процедуры EnumFields, который вы можете найти в примере для оператора SELECT.
Sub UnionX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Retrieve the names and cities of all suppliers
' and customers in Brazil.
Set rst = dbs.OpenRecordset("SELECT CompanyName," _
& " City FROM Suppliers" _
& " WHERE Country = 'Brazil' UNION" _
& " SELECT CompanyName, City FROM Customers" _
& " WHERE Country = 'Brazil';")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print the contents of the
' Recordset. Pass the Recordset object and desired
' field width.
EnumFields rst, 12
dbs.Close
End Sub