agrupacion de registros por campo en mysql GROUP_CONCAT
2008-11-08 19:15:01El titulo del post quizas no sea muy descriptivo, pero el problema es peliagudo, en un blog queremos saber como se podria hacer para escojer de los ultimos post aquellos en los que se haya comentado, escojer los 5 ultimos, y de cada uno de estos 5 ultimos, sacar los ids y los nombres de los ultimos 3 comentadores. ahi es nada.
La estructura de las tablas es la siguiente:
| posts |
|---|
| id |
| titulo |
| comentarios |
|---|
| id |
| post_id |
| autor |
| texto |
Por supuesto esto tiene una solucion facil, haces una seleccion de los ultimos comentarios y escojes los 5 ultimos que esten asociados a posts con un distinto en la consulta:
SELECT titulo, id FROM posts p, (SELECT DISTINCT (post_id) FROM comentarios ORDER BY id DESC LIMIT 5) c WHERE p.id = c.post_id
De donde sacas los ids de los ultimos posts y sus titulos, despues de esto con cada uno de los ids puedes sacar los nombres de los ultimos comentadores de cada post, introducimos en un bucle esta consulta:
SELECT id, autor FROM comentarios WHERE post_id = "( id del post actual )" ORDER BY id DESC
con lo que ya tenemos todos los datos, pero hemos necesitado 6 consultas, y para remediarlo ...
