Ver Mensaje Individual
  #9 (permalink)  
Antiguo 25/08/2006, 05:29
Avatar de macedo
macedo
 
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 3 meses
Puntos: 0
Hola moNTeZIon.

Si no te he entendido mal, los que quieres es que te salgan los mensajes ordenados de la siguiente manera:

Primer y ultimo mensaje de cada hilo, ordenando los hilos en función del mensaje más reciente de cada uno (para un categoría X)

O sea, el tipico listado de hilos de una categoría ¿no?

Si esto es así, te debería servir esta Query:

Select T1.* from ForoMensajes as t1,
(select idHilo,Max(fechaHora) as Ma, Min(fechaHora) as Mi from ForoMensajes group by Idhilo order by Ma) as T2, Hilos
where T1.IdHilo=T2.IdHilo and (T1.FechaHora=T2.Ma or T1.FechaHora=T2.Mi)
and T1.IdHilo=Hilos.IdHilo and T2.IdHilo=Hilos.IdHilo and Hilos.IdCategoria=x
order by T2.Ma Desc, T1.FechaHora Asc

Me explico:
(select idHilo,Max(fechaHora) as Ma, Min(fechaHora) as Mi from ForoMensajes group by Idhilo order by Ma Desc) as T2

Te extrae para cada hilo su idhilo, la fechahora mínima y máxima.
Con esto, si ordernas el resultado total por T2.Ma ya tienes ordenados los mensajes por los hilo con mensaje más reciente.

(T1.FechaHora=T2.Ma or T1.FechaHora=T2.Mi)
Esta condición hace que en el resultdo te salgan sólo el primer y último mensaje de cada hilo

Como sub order pones t1.fechahora (osea que dentro de los dos mensajes que te salen por hilo los ordena por fecha.

Espero que te sirva.

Un saludo.
__________________
"Hay que simplificar las cosas tanto como sea posible, pero no más".
Albert Einstein.