Volver a la lista de artículos Artículos
Lectura de 12 minutos

¿Qué es CROSS JOIN en SQL?

¿Qué es un CROSS JOIN en SQL y cuándo debería usarlo? Respondemos esas preguntas - y le damos algunos ejemplos de CROSS JOIN que puede practicar usted mismo - en este artículo.

Imagínese que está buscando en su armario ideas para conjuntos de ropa, preguntándose qué top ponerse con qué parte de abajo. Cuando piensas en el conjunto perfecto, te imaginas todas las partes de arriba y de abajo de tu armario combinadas. Este escenario es similar al de SQL CROSS JOIN; una tabla contiene las partes de arriba y otra las de abajo, y los datos de ambas tablas se combinan para explorar todos los emparejamientos posibles.

En este caso, CROSS JOIN actúa como estilista, generando todas las combinaciones posibles de filas a partir de los dos conjuntos de datos. En nuestra analogía del armario, una tabla contiene las partes de arriba y la otra las de abajo. Combinando cada parte de arriba con cada parte de abajo, se puede crear una gran variedad de conjuntos.

Pero, ¿cómo afecta esto al análisis de datos y a SQL? CROSS JOINs SQL JOIN, un tipo de SQL JOIN, permite una exploración exhaustiva de los datos mediante la creación de todas las combinaciones posibles de conjuntos de datos. Esto garantiza que no se pase por alto ninguna relación o interacción potencial, lo que permite comprender mejor las interconexiones de los datos.

Por ejemplo, como responsable de marketing de una plataforma de comercio electrónico, es posible que desee ofrecer recomendaciones de productos personalizadas basadas en las preferencias de los clientes. Al cruzar los conjuntos de datos de productos y preferencias de los clientes se obtiene una lista completa de recomendaciones personalizadas para cada cliente, lo que mejora la precisión del marketing y las ventas.

En este artículo, responderemos a todas sus preguntas sobre CROSS JOINs. Y le proporcionaremos ejercicios para que practique por su cuenta. Si es nuevo en JOINs y desea aprender más, consulte nuestro completo curso Tipos de JOIN en SQL , que incluye más de 90 ejercicios prácticos sobre varios tipos de JOIN. Este curso interactivo le ayudará a dominar los JOINs, una habilidad crítica para el análisis de datos.

Conceptos básicos de CROSS JOIN

Para comprender la esencia de un SQL CROSS JOIN, echemos un vistazo a la sintaxis básica:

SELECT *
FROM table1
CROSS JOIN table2;

Desglose:

  • SELECT *: Recupera todas (*) las columnas de la tabla combinada resultante.
  • FROM table1: Especifica la primera tabla utilizada en la operación CROSS JOIN.
  • CROSS JOIN: Indica que queremos realizar una operación de unión cruzada.
  • table2: Especifica la segunda tabla implicada en la operación CROSS JOIN.

La sintaxis es similar a la de cualquier otro SQL JOIN. La excepción es que CROSS JOIN no requiere ninguna condición de unión: combina todas las filas de una tabla con todas las filas de otra tabla, independientemente de cualquier condición o relación específica entre las filas. Puedes encontrar más información sobre esto en ¿Se pueden unir dos tablas sin una columna común?

Veamos ahora un ejemplo completo utilizando el escenario anteriormente mencionado de su armario. Para simplificar, imagine que su armario está organizado en las dos tablas siguientes:

Tops

top_itemcolorsize
sweaterredM
shirtblueM
tank_topwhiteS

Bottoms

bottom_itemcolorsize
jeansblueM
skirtblackS
shortsredS

Consulta SQL:

SELECT *
FROM Tops
CROSS JOIN Bottoms;

Salida:

top_itemcolorsizebottom_itemcolorsize
sweaterredMjeansblueM
sweaterredMskirtblackS
sweaterredMshortsredS
shirtblueMjeansblueM
shirtblueMskirtblackS
shirtblueMshortsredS
tank_topwhiteSjeansblueM
tank_topwhiteSskirtblackS
tank_topwhiteSshortsredS

En este sencillo ejemplo, CROSS JOIN conecta cada tipo de top con cada tipo de bottom, permitiéndole ver todas las combinaciones de su armario. Esta función te permite planificar mejor tus conjuntos o experimentar con nuevas ideas teniendo en cuenta todas las combinaciones posibles.

Observe que la tabla Tops tiene 3 filas y la tabla Bottoms tiene 3 filas, la tabla resultante tiene 9 (3 veces 3) filas. Este principio de multiplicación se aplica a todas las operaciones CROSS JOIN. Para más ejemplos, consulte nuestra Guía Ilustrada del CROSS JOIN SQL.

¿Qué es un Producto Cartesiano?

Un producto cartesiano, un concepto matemático introducido por René Descartes, es el resultado de emparejar cada elemento de un conjunto con cada elemento de otro. En esencia, equivale a crear todas las combinaciones posibles de dos o más conjuntos, dando como resultado la combinación de elementos de cada uno de ellos.

En SQL, la operación CROSS JOIN proporciona el producto cartesiano entre dos tablas. Combina cada fila de la primera tabla con cada fila de la segunda tabla, dando como resultado una nueva tabla en la que cada fila representa una fusión de elementos de ambas tablas. En efecto, CROSS JOIN orquesta la generación de todas las combinaciones posibles de filas de las dos tablas, dando como resultado el producto cartesiano.

Aplicaciones prácticas: SQL CROSS JOIN en Acción

Ahora, apliquemos lo que hemos aprendido con algunos ejemplos de cómo CROSS JOIN puede ayudar en la gestión de bases de datos.

Ejercicio 1: Variantes de productos

Contexto:

Tu jefe quiere ampliar la oferta de productos de la plataforma de comercio electrónico y ofrecer a los clientes una experiencia de compra más diversa. Te han dado dos tablas: colors (que contiene varios colores) y sizes (que contiene diferentes tallas) para un producto específico. Tu tarea consiste en combinar los datos de ambas tablas para generar variantes de producto completas que incluyan todas las columnas de ambas tablas.

Consulta SQL:

SELECT *
FROM colors
CROSS JOIN sizes;

Resultado de la consulta:

Esta consulta devolverá todas las columnas de las tablas colors y sizes tablas. Este ejercicio facilita la creación de variantes de productos, permitiendo a los clientes seleccionar entre una variedad de opciones. Mostrar todas las combinaciones posibles de colores y tallas mejora la experiencia de compra del cliente y aumenta la probabilidad de que éste encuentre la variante de producto deseada.

Ejercicio 2: Franjas horarias de citas

Contexto:

Tu tarea en la app de reserva de citas es programar citas de forma eficiente. Su gestor le ha proporcionado tres tablas:

  • days, que contiene los días disponibles bajo la columna day.
  • times, que contiene todas las horas disponibles bajo la columna time.
  • employees, que contiene información sobre los empleados, incluida la columna employee_name.

Su tarea es crear franjas horarias completas utilizando estas tres tablas con el día, la hora y el nombre del empleado.

Consulta SQL:

SELECT 
  days.day, 
  times.time, 
  employees.employee_name
FROM days
CROSS JOIN times
CROSS JOIN employees;

Resultado de la Consulta:

Esta consulta devolverá todas las columnas de la tabla days, timesy employees . Este ejercicio ayuda a crear franjas horarias completas teniendo en cuenta los días, las horas y los empleados. Garantiza una programación eficaz de las citas, optimiza la asignación de recursos y mejora el servicio al cliente.

Ejercicio 3: Agrupación de productos para promoción

Contexto:

En un comercio minorista, su jefe quiere aumentar las ventas promocionando atractivos paquetes de productos. Se le proporcionan dos tablas:

  • office_supplies, que contiene las columnas product_id, product_name, price, y color.
  • electronics, que contiene las columnas product_id, product_name, price, y brand.

El objetivo es crear paquetes de productos atractivos emparejando artículos de estas tablas, con el criterio adicional de que el precio del material de oficina debe ser inferior a 50 dólares. El resultado debe incluir el ID del producto, el nombre y el precio de ambas categorías.

Consulta SQL:

SELECT 
  o.product_id AS office_supplies_id, 
  o.product_name AS office_supplies_name, 
  o.price AS office_supplies_price,
  e.product_id AS electronics_id, 
  e.product_name AS electronics_name, 
  e.price AS electronics_price
FROM office_supplies o
CROSS JOIN electronics e
WHERE o.price < 50;

Resultado de la consulta:

Esta consulta devuelve un conjunto de resultados con el ID del producto, el nombre y el precio de ambas tablas, con el criterio adicional de que el material de oficina debe ser inferior a 50 dólares.

Esta completa lista facilita la creación de atractivos paquetes de productos mediante la combinación de artículos de diferentes categorías, manteniendo al mismo tiempo el precio asequible del material de oficina. Permite a los minoristas ofrecer promociones en paquetes que combinan material de oficina y productos electrónicos de bajo coste, proporcionando a los clientes una variedad de soluciones prácticas. Este enfoque estratégico refleja las preferencias de los consumidores y tiene el potencial de aumentar significativamente las ventas y la satisfacción de los clientes.

Ejercicios CROSS JOIN

En esta sección, le proporcionaremos ejercicios interactivos que puede completar por su cuenta utilizando CROSS JOINs. Cada ejercicio viene con su propio contexto y tablas. Intente resolverlos usted mismo y, a continuación, haga clic para ver las soluciones. Puedes echar un vistazo a nuestra hoja de trucos de SQL JOIN para obtener ayuda. Comencemos:

Ejercicio 1: Planificación de comidas

Usted gestiona un servicio que proporciona a los clientes una variedad de planes de comidas. Su objetivo es emparejar los platos principales con las guarniciones apropiadas para proporcionar una variedad de opciones de comidas.

Dadas las tablas que enumeran los platos principales y las guarniciones disponibles, su salida debe contener todas las combinaciones posibles de sólo la columna dish_name de la tabla mains y la columna dish_name de la tabla side_dishes de la tabla.

mains

dish_iddish_name
101Tofu Curry
102Chicken Curry
103Veggie Stir-fry

side_dishes

dish_iddish_name
201Rice
202Chips

Consulta SQL:

SELECT 
  m.dish_name AS main_dish, 
  s.dish_name AS side_dish
FROM mains m
CROSS JOIN side_dishes s;

Salida:

main_dishside_dish
Tofu CurryRice
Tofu CurryChips
Chicken CurryRice
Chicken CurryChips
Veggie Stir-fryRice
Veggie Stir-fryChips

Utilizando CROSS JOIN para combinar platos principales con guarniciones apropiadas, puede crear una amplia gama de opciones de comidas. Este enfoque permite al servicio de planificación de comidas ofrecer más combinaciones a sus clientes.

Ejercicio 2: Asignación de proyectos

Como gestor de proyectos, debe asignar un empleado a varios proyectos en función de su estado de formación. Sólo los empleados que han recibido formación especializada pueden ser asignados a los proyectos.

Se le proporcionan dos tablas, una con los proyectos disponibles y otra con el estado de formación de los empleados. Si un empleado no ha recibido formación, no puede ser asignado al proyecto. El resultado debe incluir el ID del proyecto de la tabla projects y el ID y nombre del empleado de la tabla employees de la tabla.

projects

project_idproject_name
101Project X
102Project Y

employees

employee_idemployee_namereceived_training
201JohnYes
202EmilyNo
203SarahYes

Consulta SQL:

SELECT 
  p.project_id, 
  e.employee_id, 
  e.employee_name
FROM projects p
CROSS JOIN employees e
WHERE e.received_training = 'Yes';

Resultado:

project_idemployee_idemployee_name
101201John
101203Sarah
102201John
102203Sarah

Utilizando CROSS JOIN y el filtrado apropiado, se muestran todas las combinaciones de proyectos y los empleados con la formación necesaria.

Ejercicio 3: Recomendaciones de Productos Premium

Como gestor de comercio electrónico, desea recomendar productos premium a los clientes con estado de suscripción Oro y mejorar su experiencia de compra con ofertas exclusivas.

Tiene dos tablas, una para los clientes y sus estados de suscripción y otra para los productos premium. Su objetivo es mostrar todas las combinaciones posibles de clientes que tienen estado de suscripción Oro con productos Premium, permitiendo recomendaciones personalizadas. El resultado debe incluir una lista de todas las combinaciones posibles de ID de cliente, ID de producto y nombre de producto. Trabajará con las siguientes tablas:

customers

customer_idsuscription_status
111Gold
112Silver
113Bronze
114Gold

premium_products

product_idproduct_name
101Diamond Watch
102Platinum Ring

Consulta SQL:

SELECT 
  c.customer_id, 
  p.product_id, 
  p.product_name
FROM customers c
CROSS JOIN premium_products p
WHERE c.suscription_status = 'Gold';

Resultado:

customer_idproduct_idproduct_name
111101Diamond Watch
111102Platinum Ring
114101Diamond Watch
114102Platinum Ring

Utilizando CROSS JOIN y filtrando, los clientes con un estado de suscripción Gold se emparejan eficientemente con productos premium. Esto facilita las recomendaciones personalizadas, que mejoran la experiencia de compra de estos valiosos clientes.

Si ha disfrutado con estos ejercicios de práctica, por qué no echa un vistazo a nuestro artículo SQL Joins: 12 Preguntas de Práctica con Respuestas Detalladas, donde encontrará aún más ejercicios útiles para mejorar sus habilidades SQL.

Consideraciones de Rendimiento para CROSS JOIN

Cuando se usa CROSS JOIN en SQL, es crítico considerar las implicaciones de rendimiento, particularmente dado el conjunto de resultados potencialmente masivo generado por un CROSS JOIN sin restricciones. Esta operación genera un producto cartesiano que crece exponencialmente en proporción al tamaño de las tablas de entrada. Veamos algunos consejos para evitar problemas de rendimiento.

  • Limite el tamaño de las tablas de entrada: Antes de ejecutar CROSS JOIN, refine las tablas de entrada aplicando los filtros adecuados. Utilice las cláusulas WHERE o las subconsultas para limitar el conjunto de datos y minimizar así el número de filas que deben combinarse.
  • Aplique filtros adicionales: Después de CROSS JOIN, emplee condiciones de filtrado suplementarias para refinar aún más el conjunto de resultados. Esto ayuda a reducir el tamaño del resultado final y a centrarse únicamente en los datos pertinentes, mejorando el rendimiento de la consulta.
  • Considerar tipos de unión alternativos: Evalúe si una CROSS JOIN sin restricciones es realmente indispensable. En función de los requisitos específicos, explore tipos de unión alternativos como INNER JOIN, LEFT JOIN o RIGHT JOIN, que pueden ser más eficaces y adaptarse mejor a sus necesidades.
  • Optimice laejecución de las consultas: Asegúrese de que su base de datos está optimizada para una ejecución eficaz de las consultas. La implementación de índices, especialmente en las columnas de unión, agilizará el rendimiento, sobre todo cuando se manejen conjuntos de datos extensos.

Al incorporar estas consideraciones de rendimiento para el uso de CROSS JOIN, puede mitigar la tensión indebida en su base de datos y garantizar la ejecución sin problemas de las consultas, incluso cuando se trabaja con grandes conjuntos de datos.

¿Desea obtener más información sobre CROSS JOINs en SQL?

En conclusión, CROSS JOIN en SQL es una herramienta útil para crear conjuntos de datos completos combinando cada fila de una tabla con cada fila de otra. Al comprender los fundamentos de CROSS JOIN y tener en cuenta sus implicaciones para el rendimiento, los analistas pueden aprovechar todo su potencial para explorar relaciones complejas dentro de los conjuntos de datos y extraer información valiosa.

Para aprovechar al máximo las capacidades de CROSS JOIN y otros tipos de SQL JOIN, LearnSQL.es ha creado el Tipos de JOIN en SQL curso. Este curso interactivo incluye ejercicios prácticos que cubren varios tipos de JOIN y está diseñado para ayudarle a comprender las complejidades de las operaciones JOIN.

También puedes leer otros artículos en nuestro blog, como Las 10 preguntas más frecuentes en una entrevista sobre JOIN SQL y cómo responderlas. Y no se olvide de nuestra útil hoja de trucos SQL JOIN, que siempre está disponible para ayudarle en su exploración de SQL. ¿A qué está esperando? Mejore sus habilidades hoy mismo.