Tema SQL
CROSS JOIN
Producto cartesiano: cada fila de la primera tabla se combina con cada fila de la segunda. Cardinalidad multiplicativa; peligroso en tablas grandes.
Descripción
CROSS JOIN no usa ON; genera todas las combinaciones. Equivale a FROM a, b sin condición de unión en muchos dialectos. Casos típicos: tablas de dimensiones pequeñas (tallas × colores), generación de series o pruebas. Si necesitas filtrar después, el coste ya está pagado en el producto; mejor suele ser INNER JOIN con condición si reduce cardinalidad antes. Vigila planes de ejecución en datos reales.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
SELECT *
FROM a
CROSS JOIN b;
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- CROSS JOIN
- Sin condición de unión; el número de filas resultantes es |a|×|b|.
Ejemplos
Ejemplo 1
SELECT t.nombre, c.color
FROM tallas t
CROSS JOIN colores c;
Ejemplo 2
SELECT COUNT(*) FROM (SELECT 1) x CROSS JOIN (SELECT 1) y;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.