select t1.sujet, t1.pseudo, t1.datepost, t2.pseudo, t2.datepost
from tab t1, tab t2
where t1.sujet is not null
and t2.idsujet = t1.idsujet
and t2.id in (select max(id)
from tab
group by idsujet)
order by t2.id desc |
si tas version de MySQL accepte les requêtes imbriquée, alors ça devrait marcher.
par contre ça sera pas performant du tout.
en deux passes (plus performant si tu as beaucoup de lignes dans la table) ça donnera un truc du genre :
select max(id) last
from tab
group by idsujet
order by last limit 0, 20
while (!fin_des_donnes)
{
select t1.sujet, t1.pseudo, t1.datepost, t2.pseudo, t2.datepost
from tab t1, tab t2
where t1.sujet is not null
and t2.idsujet = t1.idsujet
and t2.id = $last
} |
Mais bon, ça serait quand même plus propre si tu avais deux tables, une pour les topic (ne contenant que le sujet), et une pour les posts (contenant le premier message du topic)
A ce moment une requête en une seule passe serait suffisante et bien plus performante.
Message édité par MagicBuzz le 30-10-2003 à 19:45:51