sql >> Base de Datos >  >> RDS >> Database

Cómo obtener todas las combinaciones posibles de filas de dos tablas en SQL

Problema:

Desea obtener todas las combinaciones de filas de dos tablas en SQL.

Ejemplo:

Aquí hay dos tablas:una contiene letras (letters ), y el otro contiene números (numbers ):

carta
X
Y
número
0
1
2

Solución 1:

Para combinar cada fila de las letters tabla con cada fila de los numbers tabla, usaremos el CROSS JOIN :

SELECT *
FROM letters
CROSS JOIN numbers;

El resultado de la consulta se ve así:

carta número
X 0
Y 0
X 1
Y 1
X 2
Y 2

Solución 2:

Otra forma de realizar CROSS JOIN es la siguiente:

SELECT *
FROM letters, numbers;

Esto obtendrá exactamente el mismo resultado producido por la consulta anterior.

Discusión:

Como regla general, un CROSS JOIN produce un conjunto de resultados en el que cada fila de una tabla se une a cada fila de otra tabla. En otras palabras, si la primera tabla almacena n filas y la segunda tabla almacena m filas, luego un CROSS JOIN dará como resultado un producto cartesiano de n × m filas Es por eso que hay seis filas devueltas por la consulta en el ejemplo anterior.

Porque un CROSS JOIN produce todas las combinaciones posibles de las filas entre las tablas que se unen, no es necesario especificar una relación. Entonces, a diferencia de otros JOINs , no hay ON cláusula en un CROSS JOIN .