
30/05/2016, 07:59
|
 | Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses Puntos: 2658 | |
Respuesta: No se formular la sentencia mysql Como te dice Libras, estás mostrando sólo datos de dos de las tabas, pero tu JOIN está devolviendo los registros de cuatro de ellas.
El problema es que cuando recorres el set de resultado, puedes estar tomando registros que repiten datos, porque los datos que las diferencian son de las dos tablas cuyas columnas NO muestras.
Es imposible saberlo con certeza, porque tu consulta tiene el clasico caso de obtener TODAS las columnas, incluso las superfluas... SELECT * es la peor forma de consulta para ser usada en reportes. Sería preferible que usaras un SELECT acotado a las columnas que realmente necesitas.
Además, estás creando una relación en estrella, lo que puede dar resultados imprevisibles, dado que relacionas la primera tabla con la segunda, pero la tercera (la subquery) la relacionas con la primera, sin vinculo con la segunda, lo que podría dar resultados inesperados o inválidos.
Hay que tener MUCHO cuidado cuando se usa exclusivamente LEFT JOIN. Para que los datos sean consistentes el LEFT JOIN debe relacionar sólo los datos entre la tabla izquierda y la derecha del JOIN, sin saltarse ninguna. ¿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) |