Esta sección fue analizado por nuestros especialistas así se asegura la veracidad de este enunciado.
Solución:
Si tiene una “cuadrícula” que desea llenar por completo, como la información de tamaño y color para una prenda de vestir en particular:
select
size,
color
from
sizes CROSS JOIN colors
Tal vez quiera una tabla que contenga una fila para cada minuto del día y quiera usarla para verificar que un procedimiento se haya ejecutado cada minuto, por lo que podría cruzar tres tablas:
select
hour,
minute
from
hours CROSS JOIN minutes
O tiene un conjunto de especificaciones de informes estándar que desea aplicar todos los meses del año:
select
specId,
month
from
reports CROSS JOIN months
El problema de mantener estos puntos de vista es que, en la mayoría de los casos, no desea un producto completo, particularmente con respecto a la ropa. Puedes añadir MINUS
lógica a la consulta para eliminar ciertas combinaciones que no tiene, pero puede que le resulte más fácil llenar una tabla de otra manera y no usar un producto cartesiano.
Además, podría terminar probando la unión cruzada en tablas que quizás tengan algunas filas más de las que pensaba, o quizás su WHERE
cláusula faltaba parcial o totalmente. En ese caso, su DBA le notificará de inmediato sobre la omisión. Por lo general, él o ella no será feliz.
Generar datos para la prueba.
Por lo general, no querrá un producto cartesiano completo para la mayoría de las consultas de la base de datos. Todo el poder de las bases de datos relacionales es que puede aplicar cualquier restricción que le interese para evitar extraer filas innecesarias de la base de datos.
Supongo que un ejemplo artificial en el que podría querer eso es si tiene una tabla de empleados y una tabla de trabajos que deben realizarse y desea ver todas las asignaciones posibles de un empleado a un trabajo.