Usar uniões cruzadas

Concluído

Uma união cruzada é um produto cartesiano das duas tabelas. Usando a sintaxe ANSI SQL-89, você pode criar uma união cruzada apenas deixando desligado o filtro que conecta as duas tabelas. Usando a sintaxe ANSI-92, isso é um pouco mais difícil, o que é bom porque geralmente uma união cruzada não é desejável. Com a sintaxe ANSI-92, é altamente improvável que você obtenha uma união cruzada por acidente.

Para criar explicitamente um produto cartesiano, use o operador de CROSS JOIN.

Essa operação cria um conjunto de resultados com todas as combinações possíveis de linhas de entrada:

SELECT <select_list>
FROM table1 AS t1
CROSS JOIN table2 AS t2;

Embora esse resultado normalmente não seja uma saída desejada, há algumas aplicações práticas para gravar uma CROSS JOIN:

  • Criar uma tabela de números, com uma linha para cada valor possível dentro de um intervalo.
  • Gerar grandes volumes de dados para teste. Quando unida em si mesma, uma tabela com apenas 100 linhas pode gerar prontamente 10.000 linhas de saída com pouco trabalho.

Sintaxe CROSS JOIN

Ao gravar consultas com CROSS JOIN, considere as seguintes diretrizes:

  • Não há execução de correspondência de linhas, então não é usada nenhuma cláusula ON. (É um erro usar uma cláusula ON com CROSS JOIN).
  • Para usar a sintaxe ANSI SQL-92, separe os nomes de tabela de entrada com o operador CROSS JOIN.

A seguinte consulta é um exemplo de como usar CROSS JOIN para criar todas as combinações possíveis de funcionários e produtos:

SELECT emp.FirstName, prd.Name
FROM HR.Employee AS emp
CROSS JOIN Production.Product AS prd;