Usar junções cruzadas
Uma junção cruzada é simplesmente um produto cartesiano das duas tabelas. Usando a sintaxe ANSI SQL-89, você pode criar uma junção cruzada apenas deixando de fora o filtro que conecta as duas tabelas. Usando a sintaxe ANSI-92, é um pouco mais difícil; O que é bom, porque, em geral, uma junção cruzada não é algo que você geralmente quer. Com a sintaxe ANSI-92, é altamente improvável que você acabe com uma junção cruzada acidentalmente.
Para criar explicitamente um produto cartesiano, use o operador CROSS JOIN.
Esta 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 não seja normalmente uma saída desejada, existem algumas aplicações práticas para escrever um CROSS JOIN explícito:
- Criação de uma tabela de números, com uma linha para cada valor possível em um intervalo.
- Geração de grandes volumes de dados para testes. Quando cruzada unida a si mesma, uma tabela com apenas 100 linhas pode gerar prontamente 10.000 linhas de saída com pouco trabalho de você.
Sintaxe CROSS JOIN
Ao escrever consultas com CROSS JOIN, considere as seguintes diretrizes:
- Não há correspondência de linhas executadas e, portanto, nenhuma cláusula ON é usada. (É um erro usar uma cláusula ON com CROSS JOIN.)
- Para usar a sintaxe ANSI SQL-92, separe os nomes da tabela de entrada com o operador CROSS JOIN.
A consulta a seguir é um exemplo de uso de CROSS JOIN para criar todas as combinações de funcionários e produtos:
SELECT emp.FirstName, prd.Name
FROM HR.Employee AS emp
CROSS JOIN Production.Product AS prd;