Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2013, 22:30
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: Conteo dentro de Join

En realidad, tu consulta no está completamente bien redactada. El uso del LEFT JOIN puee ser muy traicionero si no se lo analiza bien, y en tu caso puede estar dando resultados incorrectos sin percibirlo, simplemente porque en el álgebra de consultas el orden si altera el producto...
La primera tabla debe ser aquella en la que esté el total de los registros posibles, y en tu caso, si uno de los colaboradores no participó en todas y cada una de las preguntas... no saldrá jamás.
Si la encuesta es a los colaboradores, entonces la tabla primaria de la consulta es "colaborador" y no "respuesta".
Yo la podría mas o menos así:
Código MySQL:
Ver original
  1.     C.supervisor,
  2.     C.colaborador,
  3.     R.idpregunta,
  4.     R.respuesta,
  5.     COUNT(R.respuesta) totalRespuesta
  6.     colaborador C
  7.     LEFT JOIN respuesta R ON C.idcol = R.idcolaborador
  8.     R.idencuesta = '1'
  9.     AND C.supervisor = 'ALCALA SALAZAR'
  10. GROUP BY C.supervisor, C.colaborador, R.idpregunta, R.respuesta
  11. ORDER BY R.`idpregunta` ASC
Hay tips adicionales:
1) Usa alias. Ayudan a mantener el código más legible.
2) No uses AS. Es obsoleto, innecesario y los manuales de buenas prácticas en las empresas de desarrollo lo desaconsejan.
3) No uses paréntesis innecesariamente. Los paréntesis tienen impacto en la lógica que aplica el parser y cuando se ponen sin necesidad generan efectos antiperformánticos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)