Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/05/2012, 08: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: Conteo multitabla

Código MySQL:
Ver original
  1.     C.id_noticia IdNoticia,
  2.     COUNT(C.id_noticia) Comentarios,
  3.     COUNT(R2.idcomentarios) Respuestas
  4.     noticias N
  5.     LEFT JOIN comments C ON N.id = C.id_noticia
  6.     LEFT JOIN respuestas R ON C.id_noticia = R.id_noticia
  7. WHERE `status` = 1
  8. GROUP BY N.id
  9. ORDER BY Comentarios, Respuestas DESC

La idea de esto es que una noticia puede tener cero o muchos comentario, y cada comentario puede tener cero o más respuestas. Pero no necesariamente todas las noticias tienen comentarios, ni todos los comentarios tienen respuestas.
Ahora bien, para discriminar cuantas respuestas tiene cada comentario, se requiere hacer un agrupamiento de otro nivel, e incluso sería mejor obtener los subtotales de comentarios y de respuestas a comentarios:
Código MySQL:
Ver original
  1.     C.id_noticia IdNoticia,
  2.     COUNT(C.id_noticia) Comentarios,
  3.     COUNT(R2.idcomentarios) Respuestas
  4.     noticias N
  5.     LEFT JOIN comments C ON N.id = C.id_noticia
  6.     LEFT JOIN respuestas R ON C.id_noticia = R.id_noticia
  7. WHERE `status` = 1
  8. GROUP BY IdNoticia, Comentarios WITH ROLLUP
  9. ORDER BY Comentarios, Respuestas DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)