SQL CROSS JOIN: UNIÓN CRUZADA

En SQL, el comando SQL CROSS JOIN es un tipo de unión en 2 tablas SQL que se utiliza para devolver el producto cartesiano. En otras palabras, le permite devolver cada fila en una tabla con cada fila en otra tabla. Así, realizar el producto cartesiano de una tabla A que contiene 40 resultados con una tabla B de 50 resultados producirá 2000 resultados (40 x 50 = 2000). Normalmente, el comando SQL CROSS JOIN se combina con el comando WHERE para filtrar los resultados que cumplen determinadas condiciones.

Tenga cuidado, aplicando en SQL CROSS JOIN, el número de resultados puede ser fácilmente muy alto. Si se realiza en tablas con muchos registros, puede ralentizar significativamente el servidor.

SQL CROSS JOIN​

Sintaxis SQL Cross Join

Para realizar una unión con SQL CROSS JOIN, es necesario realizar una consulta SQL respetando la sintaxis siguiente:

SELECT *
FROM table1
CROSS JOIN table2

Método alternativo para devolver los mismos resultados:

SELECT *
FROM table1, table2

Cualquiera de estas sintaxis se utiliza para asociar todos los resultados de la tabla1 con cada uno de los resultados de la tabla2.

Ejemplo en SQL Cross join

Imaginemos una aplicación de recetas de cocina que contiene 2 tablas de ingredientes, la mesa de verduras y la mesa de frutas.

Tabla de verduras:

v_idv_nombre
10Zanahoria
11Cebolla
12Puerro

 

Tabla de frutas:

f_idf_nombre
25Plátano
26Kiwi
27Pera

 

Por alguna razón, la aplicación debe combinar todas las verduras con todas las frutas. Se deben mostrar todas las combinaciones. Para ello es necesario llevar a cabo una u otra de las siguientes solicitudes:

SELECT v_id, v_nombre, f_id, f_nombre
FROM verdura
CROSS JOIN fruta

o:

SELECT v_id, v_nombre,  f_id, f_nombre
FROM verdura, fruta

Resultados:

V_idV_nom_fr_frf_idf_nombre
10Zanahoria25Plátano
10Zanahoria26Kiwi
10Zanahoria27Pera
11Cebolla25Plátano
11Cebolla26Kiwi
11Cebolla27Pera
12Puerro25Plátano
12Puerro26Kiwi
12Puerro27Pera

 

El resultado muestra que cada verdura está asociada a cada fruta. Con 3 frutas y 3 verduras, hay 9 líneas de resultados (3 x3 = 9).

Limitaciones para Cross Join

Debido a que una combinación cruzada crea un conjunto de datos más grande que cualquiera de los conjuntos de datos de origen, tiene algunas limitaciones. Tenga en cuenta estos puntos cuando diseñe y pruebe su unión cruzada.

  • Solo una unión cruzada por receta
  • Resultados de unión cruzada máximo de 10 millones
  • Máximo de columna de conjunto de datos de 8 y máximo de fila de 100,000
  • Máximo de 8 columnas del conjunto de datos de la derecha y máximo de 1000 filas
  • No admite columnas de valores múltiples

Cross Join Vs Inner Join in SQL Server

La principal diferencia entre la combinación cruzada y la combinación interna en SQL Server se explica a continuación:

Unión internaUNIÓN CRUZADA
Esta combinación devuelve solo los registros de las tablas que coinciden con la condición especificada y oculta otras filas y columnas. Si no hemos especificado ninguna combinación, se asume como una combinación predeterminada.Devuelve todas las combinaciones posibles de los registros de ambas tablas.
Esta unión ocurre solo cuando la única columna coincidente se encuentra en las tablas.Esta unión no requiere columnas coincidentes para unir dos tablas.
Combina las filas, lo que significa que, si dos tablas participantes tienen 20 registros, entonces la unión interna devuelve solo 20 registros.No combina las filas, lo que significa que, si dos tablas participantes tienen 100 registros, las uniones cruzadas devuelven 10000 registros.
Su rendimiento es rápido ya que consume menos recursos.Su rendimiento es lento porque consume más recursos.

Conclusión

La consulta SQL CROSS JOIN en SQL se usa para generar todas las combinaciones de registros en dos tablas. Por ejemplo, tiene dos columnas: tamaño y color, y necesita un conjunto de resultados para mostrar todas las posibles combinaciones emparejadas de ellas; ahí es donde CROSS JOIN será útil.

Como vemos, CROSS JOIN en SQL es extremadamente potente en los casos en los que queremos trabajar con todas las combinaciones o producto cartesiano de tablas.

SQL CROSS JOIN le permite generar un producto cartesiano para dos conjuntos de datos dados. Cuando el caso de uso subyacente requiere generar un producto cartesiano.

Tenga en cuenta que un producto cartesiano también podría generarse involuntariamente, en cuyo caso indicaría una falla en las condiciones de unión. Por ejemplo, esto podría suceder cuando se unen dos o más relaciones de tablas de uno a varios no relacionadas. Para obtener más detalles sobre estos problemas no intencionales de productos cartesianos consulte este artículo.

Deja un comentario