Freigeben über


UNION-Operation (Microsoft Access SQL)

Gilt für: Access 2013, Office 2013

Erstellt eine Union-Abfrage, in der die Ergebnisse von mindestens zwei unabhängigen Abfragen oder Tabellen miteinander kombiniert werden.

Syntax

[TABLE] Abfrage1 UNION [ALL] [TABLE] Abfrage2 [UNION [ALL] [TABLE] AbfrageN [ … ]]

Die UNION-Operation enthält die folgenden Bestandteile:

Part

Beschreibung

Abfrage1-n

Eine SELECT-Anweisung, der Name einer gespeicherten Abfrage oder der Name einer gespeicherten Tabelle, der das Schlüsselwort TABLE vorangestellt ist.

Bemerkungen

Sie können die Ergebnisse von zwei oder mehr Abfragen, Tabellen und SELECT-Anweisungen in jeder beliebigen Kombination in einer einzelnen UNION-Operation zusammenführen. The following example merges an existing table named New Accounts and a SELECT statement:

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

Standardmäßig werden keine doppelten Datensätze zurückgegeben, wenn Sie einen UNION-Vorgang verwenden. Sie können jedoch das ALL-Prädikat einschließen, um sicherzustellen, dass alle Datensätze zurückgegeben werden. Dadurch wird die Abfrage auch schneller ausgeführt.

Alle Abfragen in einer UNION-Operation müssen dieselbe Anzahl von Feldern anfordern. Doch die Felder müssen nicht dieselbe Größe oder denselben Datentyp besitzen.

Verwenden Sie Aliase nur in der ersten SELECT-Anweisung, da sie in anderen Anweisungen ignoriert werden. In der ORDER BY-Klausel verweisen Sie auf ein Feld unter dem Namen, der in der ersten SELECT-Anweisung verwendet wird.

Hinweis

  • Sie können in jedem Abfrageargument eine GROUP BY- oder eine HAVING-Klausel verwenden, um die zurückgegebenen Daten zu gruppieren.
  • Sie können am Ende des letzten Abfragearguments eine ORDER BY-Klausel verwenden, um die zurückgegebenen Daten in einer bestimmten Reihenfolge anzuzeigen.

Beispiel

In diesem Beispiel werden die Namen und Städte aller Händler und Kunden in Brasilien abgerufen. Dabei wird die EnumFields-Prozedur aufgerufen, die im Beispiel für die SELECT-Anweisung enthalten ist.

    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