Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/11/2015, 13: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: Problema con consulta Counts!

LEFT JOIN devuelve todo lo que está en la tabla izquierda (la primera) tenga o no coincidencias con la de la derecha. Eso es básicamente lo que hace.
Ahora bien, en ocasiones MySQL, cuando defines ciertas condiciones en el WHERE puede implementar el LEFT JOIN como si le indicaras INNER JOIN, y eso es lo que estaba pasando. El filtro sobre los otros campos excluye los casos nulos de la tabla derecha. Por eso, cuando haces un WHERE con condiciones concretas, debes sí o si indicar la condición nula. Simplemente tomas cualquier campo de la segunda tabla y le indicas "OR campo IS NULL".

Nota bene: No es buena idea hacer LEFT JOIN entre más de dos tablas si el LEFT JOIN aplica sobre la primera en todos los casos, porque pueden generarse productos cartesianos y datos inconsistentes. Se producen relaciones en estrella indeseados.
Hay que analizar bien el caso.

Nota Bene 2: La relación indicada en el ON debe cumplir con la posición de las tablas en el LEFT JOIN. No las inviertas o los resultados pueden ser incorrectos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)