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
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...
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...