Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/09/2008, 03:34
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Ordenando posts por última respuesta

Te hago la propuesta y te la explico (seguramente haya otras).

Cita:
SELECT t.id, t.titulo, t1.fechapost, r.autor, r.texto
FROM thread t
INNER JOIN respuestas r ON t.id = r.refidthread
INNER JOIN (

SELECT refidthread, max( fecha ) fechapost
FROM `respuestas`
GROUP BY refidthread
ORDER BY max( fecha ) DESC
LIMIT 10
)t1 ON ( t.id = t1.refidthread
AND t1.fechapost = r.fecha )
ORDER BY t1.fechapost DESC
Lo primero es averiguar las fechas más recientes de los thread. Para eso agrupo por refidthread de la tabla que he llamado respuestas (los posts), sacando el máximo valor de fecha de cada post, ordenando descendentemente por esa fecha y limitando a 10.

SELECT refidthread, max( fecha ) fechapost
FROM `respuestas`
GROUP BY refidthread
ORDER BY max( fecha ) DESC
LIMIT 10

Luego mediante inner join de las dos tablas y también con ese resultado, busco todos los datos de thread y respuestas, relacionando por el id del thread y por la fecha (recuerda que es la máxima para cada thread). Cruza las tablas y me trae los datos de las que coinciden con lo sacado en la consulta primera.

Última edición por jurena; 02/09/2008 a las 04:02