Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/05/2016, 07:59
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: 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)