SQL: uniones cruzadas

Rodrigo Ricardo Publicado el 14 noviembre, 2020 4 minutos y 16 segundos de lectura

Unión cruzada SQL

Una combinación cruzada de lenguaje de consulta estructurado (SQL) devuelve todas las filas de la primera tabla TIMES todas las filas de la segunda tabla. Sí, no es una suma, sino una multiplicación lo que se está realizando. Este tipo de combinación es realmente un producto cartesiano de los conjuntos de datos entre las dos tablas.

Entonces, ¿qué es un producto cartesiano?

Producto cartesiano

Antes de analizar la unión cruzada en detalle, debemos comprender el concepto de producto cartesiano. Verá uniones cruzadas referidas de esta manera, así que analicemos esto.

Básicamente, un producto cartesiano de A y B es A por B, donde se devuelven todos los pares de valores coincidentes entre A y B. En otras palabras, digamos que tenemos los siguientes valores para A y B:

A = (4, 5, 6)

B = (7, 8)

Cuando calculamos el producto cartesiano, obtenemos: {(4, 7), (4, 8), (5, 7), (5, 8), (6, 7), (6, 8)}.

En formato gráfico, se ve así:

Gráfico de producto cartesiano SQL

Entonces esas son las matemáticas. ¿Cómo se ve esto en SQL? Esta figura muestra un alto nivel de cómo se completa una unión cruzada entre dos tablas:

Gráfico de unión cruzada SQL

Sintaxis y ejemplos

Hay dos sentencias SQL válidas para crear una combinación cruzada. El primer ejemplo establece explícitamente que tiene la intención de que la base de datos realice el producto cartesiano:

SELECCIONAR * DEL Cliente 
  CRUZAR UNIR ÓRDENES

El segundo ejemplo también es válido, pero a primera vista, no es obvio lo que se pretende. Todavía funciona, pero si realmente tiene la intención de hacer una combinación cruzada, debe indicarse explícitamente en el SQL:

SELECCIONAR * DE 
  Cliente, Pedidos;

Dado que la operación clave aquí es la combinación CROSS JOIN / producto cartesiano, es importante incluir las palabras clave en la consulta. Puede que a la base de datos no le importe, pero al administrador u otros usuarios de sus sentencias SQL puede que le importe mucho. El uso de CROSS JOIN en la declaración SQL muestra claramente lo que pretende.

Datos de la tabla

Echemos un vistazo a cómo se vería la combinación con algunos datos reales. Está bien mostrar las matemáticas y explicar que la declaración realmente devuelve todas las filas de las tablas: la palabra clave es producto o multiplicación.

Nombre del clienteCorreo electrónico del cliente
John Doe doe.john@mail.com
fulano de tal doe.jane@mail.com
Sally Doe doe.sally@mail.com
Solicitar IDIdentificación del artículo
12345 738
98255 906
55556 329

El resultado de la unión cruzada es:

Nombre del clienteCorreo electrónico del clienteSolicitar IDIdentificación del artículo
John Doe doe.john@mayo.edu 12345 738
fulano de tal doe.jane@mail.com 12345 738
Sally Doe doe.sally@mail.com 12345 738
John Doe doe.john@mayo.edu 98255 906
fulano de tal doe.jane@mail.com 98255 906
Sally Doe doe.sally@mail.com 98255 9069
John Doe doe.john@mayo.edu 55556 329
fulano de tal doe.jane@mail.com 55556 329
Sally Doe doe.sally@mail.com 55556 329

Ahora tenemos nueve filas de datos del producto cartesiano. A primera vista, podría parecer que esto es bastante inútil: ¡no todos los clientes recibieron todos los pedidos! Sin embargo, existen usos prácticos para la unión cruzada / unión de producto cartesiana.

Usos practicos

La mayoría de los tutoriales de SQL le dirán que evite las combinaciones cruzadas; sin embargo, sin especificar las combinaciones entre las tablas, su resultado será cada combinación de filas de las tablas. Con tablas grandes, la consulta puede salirse de control y bloquear el sistema. Por ejemplo, si tuviera una tabla con 10,000 filas y otra tabla con 40,000 filas, el resultado sería 800,000,000 filas.

Esto puede parecer un error, pero es bueno para descargar datos para su posterior análisis y clasificación. Otra opción es crear una cuadrícula que debe completarse por completo. Por ejemplo, zapato y talla:

SELECCIONE la marca, los tamaños de la marca, los tamaños 
  CROSS JOIN;

Esto le permite buscar cualquier combinación que pueda faltar o eliminar aquellas combinaciones que sabe que no tiene en stock. El concepto clave aquí es que tendrá que analizar los datos de otras formas, ordenarlos en Excel, por ejemplo, o filtrar ciertos valores. Los administradores de bases de datos no siempre son grandes fanáticos de las combinaciones cruzadas; sin embargo, para pruebas o trabajo analítico, la unión cruzada puede ser útil.

Resumen de la lección

Revisemos. Una combinación cruzada es un producto cartesiano , lo que significa que el resultado es una combinación de todos los registros de cada tabla. La instrucción SQL recomendada incluye CROSS JOIN para que quede claro lo que se devuelve. La palabra clave aquí es ‘producto’, que significa multiplicación: el producto cartesiano, o unión cruzada, multiplica las filas devueltas. La tabla A con cinco filas unidas en cruz a la tabla B con cinco filas devolverá 25 filas. Las uniones cruzadas son útiles para rellenar cuadrículas con todos los datos posibles o volcar datos para su posterior análisis y clasificación.

Explora más sobre este tema

Selecciona un tema y sigue aprendiendo...

Rodrigo Ricardo
Rodrigo Ricardo Editor y fundador