[MySQL] Récupérer la première ligne d'un GROUP BY

WRInaute passionné
Bonjour à tous, je vous expose mon problème, pas simple.

J'ai une table "forum" unique pour un forum, qui contient (entre autres) les champs suivants
- id (identifiant du message)
- thread (identifiant du thread = id du premier message du thread)
- date (date du message)
- titre (titre du message)
+ d'autre champs sans importance pour mon problème

Je cherche simplement à récupérer les 5 derniers thread, avec le nombre de réponses associées, la date et l'id de la dernière réponse, et le titre du premier message du thread

Pour l'heure je fais un
Code:
// selection 5 derniers thread
$threads=sql_gettab("SELECT thread, max(id) FROM forum GROUP BY thread ORDER BY max(id) DESC LIMIT 5");

// selection
$query="SELECT count(id) as cnt, max(id) as last_id, max(date) as last_date, thread, head FROM forum WHERE thread in (0";
foreach ($threads as $row) $query.=", ".$row[thread];
$query.=") GROUP BY thread ORDER BY last DESC";
$result=sql_gettab($query);

La première requête SQL permet d'optimiser le temps de traitement, car la deuxième est assez longue

LE PROBLEME est que lors du regroupement (GROUP BY) de la deuxième requête, je voudrais récuprérer le "head" qui correspond à la première ligne, et que là ça me sort un head aléatoire parmi toutes les lignes regroupées.

Un exemple
id thread head
12 12 salut wri
15 12 re: salut wri
17 12 coucou wri

lors du regroupement, je voudrai récupérer le head qui correspons au premier id, soit "salut wri", or ma requête récupère n'importe lequel (j'ai l'impression que c'est aléatoire).

Un coup de main ce serait super sympa...
 
WRInaute impliqué
A tester, je suis vraiment pas sûr de moi !
jcaron devrait bientôt passer par là pour donner une vrai version ;)

Code:
SELECT
	DISTINCT F.thread,
	F.titre, 
	F.date
	FCount.nb
FROM
	forum as F,
	(SELECT COUNT(id) as nb FROM forum as F2 WHERE F.thread = F2.thread GROUP BY F2.thread) as FCount
WHERE
	1
ORDER BY
	F.date DESC
LIMIT
	5

Bon courage
 
WRInaute passionné
Merci de ton aide, je regarde ça de plus près mais je crois que MySQL n'accepte pas les GROUP BY dans une sous requête (j'avais testé)
 
Discussions similaires
Haut