SQL

Cómo usar CROSS JOIN de SQL Server para unir dos o más tablas no relacionadas.

Estrada Web Group
jiestrada
Cómo usar CROSS JOIN de SQL Server para unir dos o más tablas no relacionadas.

Resumen: en este tutorial, aprenderás cómo usar CROSS JOIN de SQL Server para unir dos o más tablas no relacionadas.

¿Qué es y qué hace el CROSS JOIN de SQL?

El CROSS JOIN se usa para generar una combinación emparejada de cada fila de la primera tabla con cada fila de la segunda tabla. Este tipo de unión también se conoce como unión cartesiana.

Supongamos que estamos sentados en una cafetería y decidimos pedir el desayuno. En breve, veremos el menú y comenzaremos a pensar en qué combinación de comida y bebida podría ser más sabrosa. Nuestro cerebro recibirá esta señal y comenzará a generar todas las combinaciones de comidas y bebidas.

La siguiente imagen ilustra todas las combinaciones de menú que puede generar nuestro cerebro. SQL CROSS JOIN funciona de manera similar a este mecanismo, ya que crea todas las combinaciones emparejadas de las filas de las tablas que se unirán.

Cross Join de SQL Server

Sintaxis de CROSS JOIN

A continuación, se ilustra la sintaxis de SQL Server CROSS JOIN de dos tablas:

SELECT
        select_list
FROM
        T1
CROSS JOIN T2;

El CROSS JOIN une cada fila de la primera tabla (T1) con cada fila de la segunda tabla (T2). En otras palabras, la combinación cruzada devuelve un producto cartesiano de filas de ambas tablas.

A diferencia de INNER JOIN o LEFT JOIN, CROSS JOIN no establece una relación entre las tablas unidas.

Suponga que la tabla T1 contiene tres filas 1, 2 y 3 y la tabla T2 contiene tres filas A, B y C.

CROSS JOIN obtiene una fila de la primera tabla (T1) y luego crea una nueva fila para cada fila de la segunda tabla (T2). Luego hace lo mismo para la siguiente fila de la primera tabla (T1) y así sucesivamente.

CROSS JOIN de SQL Server

En esta ilustración, CROSS JOIN crea nueve filas en total. En general, si la primera tabla tiene n filas y la segunda tabla tiene m filas, la combinación cruzada dará como resultado n x m filas.

Ejemplos de CROSS JOIN de SQL Server

La siguiente declaración devuelve las combinaciones de todos los productos y tiendas. El conjunto de resultados se puede utilizar para el procedimiento de inventario durante los cierres de fin de mes y de fin de año:

SELECT
    product_id,
    product_name,
    store_id,
    0 AS quantity
FROM
    production.products
CROSS JOIN sales.stores
ORDER BY
    product_name,
    store_id;

Resultado:

sintaxis de SQL Server CROSS JOIN

La siguiente declaración encuentra los productos que no tienen ventas en las tiendas:

SELECT
    s.store_id,
    p.product_id,
    ISNULL(sales, 0) sales
FROM
    sales.stores s
CROSS JOIN production.products p
LEFT JOIN (
    SELECT
        s.store_id,
        p.product_id,
        SUM (quantity * i.list_price) sales
    FROM
        sales.orders o
    INNER JOIN sales.order_items i ON i.order_id = o.order_id
    INNER JOIN sales.stores s ON s.store_id = o.store_id
    INNER JOIN production.products p ON p.product_id = i.product_id
    GROUP BY
        s.store_id,
        p.product_id
) c ON c.store_id = s.store_id
AND c.product_id = p.product_id
WHERE
    sales IS NULL
ORDER BY
    product_id,
    store_id;

La siguiente imagen muestra el conjunto de resultados parciales:

usar SQL Server CROSS JOIN

En este tutorial, has aprendido a usar CROSS JOIN de SQL Server para crear productos cartesianos de filas a partir de tablas unidas.

Compartir artículo:

Más artículos geniales

Cómo obtener el número de caracteres de una cadena en SQL Server con la función LEN()

Cómo obtener el número de caracteres de una cadena en SQL Server con la función LEN()

En este tutorial, aprenderá cómo usar la función LEN() de SQL Server para obtener la cantidad de caracteres de una cadena.

Ver artículo completo
Cómo limitar el número de filas que me regresa una consulta en SQL Server utilizando la cláusula OFFSET FETCH

Cómo limitar el número de filas que me regresa una consulta en SQL Server utilizando la cláusula OFFSET FETCH

Las cláusulas OFFSET y FETCH se utilizan con la cláusula ORDER BY. Las cuales te permiten limitar el número de filas que devolverá una consulta.

Ver artículo completo
¿Para qué sirve la función ASCII de SQL Server y cómo utilizarla?

¿Para qué sirve la función ASCII de SQL Server y cómo utilizarla?

En este tutorial, aprenderá a usar la función ASCII() de SQL Server para obtener el código ASCII de un carácter.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;