Uso de combinaciones cruzadas
Una combinación cruzada es simplemente un producto cartesiano de las dos tablas. Con la sintaxis ANSI SQL-89, puede excluir el filtro que conecta las dos tablas para crear una combinación cruzada. Con la sintaxis ANSI-92, es un poco más difícil, lo que es positivo porque, en general, una combinación cruzada no es algo que normalmente le interesará. Con la sintaxis ANSI-92, es muy poco probable que termine con una combinación cruzada accidentalmente.
Para crear de forma explícita un producto cartesiano, use el operador CROSS JOIN.
Esta operación crea un conjunto de resultados con todas las combinaciones posibles de las filas de entrada:
SELECT <select_list>
FROM table1 AS t1
CROSS JOIN table2 AS t2;
Aunque este resultado no suele ser una salida deseada, hay algunas aplicaciones prácticas para escribir una operación CROSS JOIN explícita:
- Crear una tabla de números, con una fila para cada valor posible de un intervalo.
- Generar grandes volúmenes de datos para pruebas. Cuando se le aplica una combinación cruzada a sí misma, una tabla con tan solo 100 filas puede generar fácilmente 10 000 filas de salida.
Sintaxis de CROSS JOIN
Al escribir consultas mediante CROSS JOIN, tenga en cuenta las instrucciones siguientes:
- No se realiza ninguna coincidencia de filas, por lo que no se usa ninguna cláusula ON. (Es un error usar una cláusula ON con CROSS JOIN).
- Para usar la sintaxis ANSI SQL-92, separe los nombres de tabla de entrada con el operador CROSS JOIN.
La consulta siguiente es un ejemplo del uso de CROSS JOIN para crear todas las combinaciones de empleados y productos:
SELECT emp.FirstName, prd.Name
FROM HR.Employee AS emp
CROSS JOIN Production.Product AS prd;