UNION 操作 (Microsoft Access SQL)

適用先: Access 2013、Office 2013

ユニオン クエリを作成します。ユニオン クエリとは、独立した複数のクエリまたはテーブルの結果を結合するクエリのことです。

構文

[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]

UNION 操作には、次の指定項目があります。

パーツ

説明

query1-n

SELECT ステートメント、保存されたクエリ名、または TABLE に続けて指定する保存されたテーブル名。

注釈

1 回の UNION 操作で、複数のクエリ、テーブル、および SELECT ステートメントの結果を、任意の組み合わせで結合することができます。 次の例では、"New Accounts" という既存のテーブルと SELECT ステートメントを結合します。

TABLE [New Accounts] UNION ALL 
SELECT * 
FROM Customers 
WHERE OrderAmount > 1000;

UNION 操作を使用する場合、特に指定しなければ重複したレコードは返されません。 ただし、ALL 述語を使用すると重複分を含むすべてのレコードが必ず返され、クエリの実行速度も速くなります。

UNION 操作でクエリが要求するフィールドの数は、すべてのクエリで同じである必要があります。ただし、フィールドのサイズやデータ型は同じである必要はありません。

エイリアスは最初の SELECT ステートメントでのみ使用します。これは、他のステートメントでは無視されるためです。 ORDER BY 句で、最初の SELECT ステートメントで呼び出されるフィールドを参照します。

注:

  • 引数 query のそれぞれのクエリ中で GROUP BY 句や HAVING 句を使用すると、返されるデータをグループ化できます。
  • 引数 query の末尾に指定するクエリで ORDER BY 句を使用すると、返されるデータを指定の順序で表示できます。

次の使用例では、ブラジル国内のすべての仕入先および得意先の名前と都市名を取得します。 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