A maioria das consultas SQL usa uma única instrução que retorna dados de uma ou mais tabelas. SQL também permite executar várias consultas separadas ao mesmo tempo e exibir o resultado como um único conjunto de dados. Essas consultas combinadas são geralmente chamadas de junções ou consultas complexas.
As consultas SQL são combinadas usando o operador UNION. Para fazer isso, você precisa especificar cada solicitação SELECT e colocar a palavra-chave UNION entre elas. Não há limite para o número de usos do operador UNION em uma consulta geral. Na seção anterior, observamos que MS Access não tem a capacidade de criar uma união externa completa, agora veremos como isso pode ser alcançado por meio do operador UNION.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
Vemos que a consulta exibiu todas as colunas da primeira tabela e da segunda, independentemente de todos os registros terem contrapartes em outra tabela.
Também é importante notar que em muitos casos, em vez de UNION, podemos usar a cláusula WHERE com muitas condições e obter um resultado semelhante. Porém, por meio de UNION, os registros parecem mais concisos e claros.
Também é necessário seguir certas regras ao escrever consultas combinadas:
Uma consulta com UNION remove automaticamente todas as linhas duplicadas do conjunto de resultados da consulta (em outras palavras, se comporta como uma cláusula WHERE com múltiplas condições em uma única instrução SELECT). Este é o comportamento padrão do operador UNION, mas podemos alterá-lo se quisermos. Para isso devemos usar o operador UNION ALL em vez de UNION.
Os resultados da instrução SELECT são classificados usando a instrução ORDER BY. Ao combinar consultas usando UNION, apenas uma cláusula ORDER BY pode ser usada e deve ser colocada na última instrução SELECT. Na verdade, na prática, não faz muito sentido ordenar parte dos resultados numa ordem e a outra parte noutra. Portanto, múltiplas sentenças ORDER BY não são permitidas.