Compartilhar via


Operação UNION (SQL do Microsoft Access)

Aplica-se ao: Access 2013, Office 2013

Cria uma consulta união, que combina os resultados de duas ou mais consultas ou tabelas independentes.

Sintaxe

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

A operação UNION contém estas partes:

Sair

Descrição

consulta1-n

Uma instrução SELECT, o nome de uma consulta armazenada ou o nome de uma tabela armazenada precedida pela palavra-chave TABLE.

Comentários

Você pode mesclar os resultados de duas ou mais consultas, tabelas e instruções SELECT, em qualquer combinação, em uma única operação UNION. O exemplo a seguir mescla uma tabela existente chamada Novas Contas e uma instrução SELECT:

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

Por padrão, nenhum registro duplicado é retornado quando você usa uma operação UNION; contudo, você pode incluir o predicado ALL para garantir que todos os registros sejam retornados. Isso também faz com que a consulta seja executada de modo mais rápido.

Todas as consultas em uma operação UNION devem solicitar o mesmo número de campos; entretanto, os campos não têm que ser do mesmo tamanho nem do mesmo tipo de dados.

Use aliases somente na primeira instrução SELECT, porque eles são ignorados em quaisquer outras instruções. Na cláusula ORDER BY, refira-se aos campos pelo modo como são chamados na primeira instrução SELECT.

Observação

  • Você pode usar uma cláusula GROUP BY ou HAVING em cada argumento query para agrupar os dados retornados.
  • Você pode usar uma cláusula ORDER BY no final do último argumento query para exibir dados retornados em um ordem específica.

Exemplo

Este exemplo recupera os nomes e cidades de todos os clientes e fornecedores no Brasil. Ele é chamado procedimento EnumFields, e pode ser encontrado no exemplo da instrução 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