Sin categoría

¿Qué es Cross Join en SQL?

¿Qué es la unión cruzada en SQL?

¿Qué es el Cross Join en SQL? Conceptos básicos

Una consulta de unión cruzada devolverá el producto cartesiano de las filas de las tablas de la unión. Es el resultado de combinar cada fila de una tabla con cada fila de la segunda tabla.

¿Para qué sirve Cross Join?

Utilizaría una unión cruzada para ver todas las combinaciones posibles de las filas de una tabla junto con los datos de todas las filas de una segunda tabla. Imagina que quieres ver una lista de todos los modelos de SUV Tesla en todos los colores. Para tomar una decisión, necesita poder imaginar todas las combinaciones para las que una lista podría ser útil. Como el número de modelos de SUV como colores es pequeño, el conjunto de resultados no es demasiado grande. Normalmente, ya tendría una preferencia por el color o el modelo, por lo que utilizaría una operación de unión más común que especifique una condición de unión, lo que daría lugar a un conjunto de resultados más pequeño.

¿Cuál es la diferencia entre unión y cruce?

La unión cruzada devuelve cada combinación de filas de dos tablas en dos columnas que muestran cada combinación una al lado de la otra. Una unión devuelve el mismo número de filas en una sola columna y elimina los duplicados.

Columna 1. Columna 2

MODELO X negro
MODELO Y negro
MODELO X blanco
MODELO Y blanco

El resultado con UNION tendrá este aspecto:

Columna 1
MODELO X
MODELO Y
Negro
Blanco

¿Cuál es la diferencia entre Cross Join e Inner Join?

Una unión interna hace coincidir todos los registros entre tablas, pero sólo devuelve los valores coincidentes. Es la intersección de dos tablas. La unión cruzada mostrará todas las filas de ambas tablas.

Cross Join en la sintaxis SQL

Existen dos variantes en la sintaxis SQL de las uniones cruzadas, una con coma y otra sin coma. A continuación se muestran ejemplos de ambas.

La sintaxis común es
SELECT * FROM [Tabla1] CROSS JOIN [Tabla2] ;

La versión con comas de la misma sentencia es:
SELECT * FROM [Tabla1], [Tabla2] ;

No es necesaria una condición de unión, ya que se devuelven todas las filas.

Ejemplo

En este ejemplo, utilizaremos dos tablas, una de las cuales contendrá los modelos de SUV de Tesla, como se indica a continuación:

TABLA: Modelos Tesla-SUV
Columnas: Modelos
Valores:
MODELO X
MODELO Y

La segunda tabla contiene los colores de los coches como se indica a continuación:

TABLA: Tesla-Colors
Columnas: Colores
Valores:
Negro
Blanco

A continuación se muestra un ejemplo de sentencia SQL para una unión cruzada:

SELECT * FROM Tesla-SUV-Modelos CROSS JOIN Tesla-Colors;

Los resultados serán los siguientes:
Modelos Colores
MODELO X negro
MODELO Y negro
MODELO X blanco
MODELO Y blanco

Como puede ver, la consulta devuelve todas las combinaciones posibles de las columnas de ambas tablas.

Cómo utilizar las uniones cruzadas

La unión cruzada se considera una sentencia muy cara en términos de uso de datos porque devuelve el producto de la tabla que se está uniendo. Si la primera tabla contiene 100 filas y la segunda 1000 filas, la consulta resultante de la unión cruzada devolverá 100 x 1000 filas, lo que equivale a 100.000 filas.

El documento de SQL Server afirma que "se trata de una operación potencialmente cara y peligrosa, ya que puede provocar una gran explosión de datos. Se utiliza mejor en escenarios en los que no se puede utilizar una unión normal, y se están utilizando predicados muy selectivos en la cláusula WHERE para limitar el número de filas producidas."

A more format definition of the operation can be described as follows; The Cartesian Product is a multiplication operation in set theory that generates all ordered pairs of the given sets. If A is a set and elements are {a,b} and B is a set with elements {1,2,3}. The Cartesian Product of these two A and B is denoted A x B, and the result will be as follows:

AxB ={(a,1), (a,2), (a,3), (b,1), (b,2), (b,3)}

Muchos optimizadores de consultas basados en costes y outils bi marcarán la consulta como costosa de ejecutar, devolviendo un error justo al principio del conjunto de resultados a modo de vista previa con una advertencia. Si los datos no cambian a menudo, las tablas son lo suficientemente grandes como para que el DBA pueda crear una vista materializada de los datos, que se actualiza automáticamente cuando cambian los datos.

Visite el sitio web de Actian para obtener más información sobre nuestra gama de productos y servicios de datos.