Database
 sql >> Base de Dados >  >> RDS >> Database

Como obter todas as combinações possíveis de linhas de duas tabelas no SQL

Problema:


Você deseja obter todas as combinações de linhas de duas tabelas no SQL.

Exemplo:


Aqui estão duas tabelas:uma contém letras (letters ), e o outro contém números (numbers ):
carta
X
S
número
0
1
2

Solução 1:


Para combinar todas as linhas das letters tabela com cada linha dos numbers tabela, usaremos o CROSS JOIN :
SELECT *
FROM letters
CROSS JOIN numbers;

O resultado da consulta fica assim:
carta número
X 0
S 0
X 1
S 1
X 2
S 2

Solução 2:


Outra forma de realizar o CROSS JOIN é a seguinte:
SELECT *
FROM letters, numbers;

Isso obterá exatamente o mesmo resultado produzido pela consulta anterior.

Discussão:

Como regra geral, um CROSS JOIN produz um conjunto de resultados no qual cada linha de uma tabela é unida a cada linha de outra tabela. Em outras palavras, se a primeira tabela armazena n linhas e a segunda tabela armazena m linhas e, em seguida, um CROSS JOIN resultará em um produto cartesiano de n × m linhas. É por isso que há seis linhas retornadas pela consulta no exemplo acima.

Porque um CROSS JOIN produz todas as combinações possíveis das linhas entre as tabelas que estão sendo unidas, não há necessidade de especificar um relacionamento. Então, ao contrário de outros JOINs , não há ON cláusula em um CROSS JOIN .