Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/11/2013, 12:23
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Evitar producto cartesiano entre tablas

Cita:
me devuelve 6 registros, debido al producto cartesiano entre las tablas
Eso no es un producto cartesiano, sino la consecuencia de una relación N:N entre las tres tablas.
No confundas.
Producto cartesiano sería si cada registro de una tabla hace un JOIn con cada uno de la otra, en cadena, incluyendo aquellos registros donde no existe una relacion declarada de FK.
En tu caso, si devuelve 6 registros debe estar reptiendo los datos propios de las dos primeras tablas, pero los de la tercera deben ser distintos en algunos valores, ¿no?
Supongamos que te está devolviendo uno solo relacionado con un registro de la primera tabla con uno de la segunda y uno de la tercera. Luego uno de la primera con uno de la segunda, y con cinco de la tercera.

Eso no es producto cartesiano (PC). Si fuese un PC, en ese ejemplo debería devolverte venticuatro registros, no seis...
Es decir, dos de de la primera con cada uno de los dos de la segunda, y cada uno de esos con seis de la tercera... Serían 2 x 2 x 6.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)