Bonjour à tous.
On m'a récemment conseillé d'utiliser des JOIN pour les requêtes de mon forum, hors ne connaissant que moyennement le sujet je suis confronté à un problème; ma requête est affreusement lente.
J'explique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT _f_forums.ID, _f_forums.description, _f_forums.nom, _f_topics.ID AS tID, _f_topics.posteur, _f_topics.sujet, _f_topics.date, _f_posts.ID AS pID, _f_posts.posteur AS pposteur, _f_posts.sujet AS psujet, _f_posts.date AS pdate, _f_posts.time, COUNT( DISTINCT (ctopic.ID)) AS nbt, COUNT(cposts.ID) AS nbp FROM _f_forums LEFT JOIN _f_topics ON _f_forums.lasttopic = _f_topics.ID LEFT JOIN _f_posts ON _f_topics.lastpost = _f_posts.ID LEFT JOIN _f_topics AS ctopic ON ctopic.relatif = _f_forums.ID LEFT JOIN _f_posts AS cposts ON cposts.relatif = ctopic.ID WHERE _f_forums.description <> 'alliance' AND _f_forums.rang <= '5' GROUP BY _f_forums.ID ORDER BY _f_forums.ID ASC
J'ai une table _f_forums à laquelle correspondent de multiples entrées de _f_topics, je veux le dernier topic de chaque forum (_f_forums.lasttopic = _f_topics.ID)
Ensuite pour chaqun de ces topics j'aimerais que le dernier enregistrement correspondant dans _f_posts soit sélectionné (_f_topics.lastpost = _f_posts.ID)
Enfin pour chaque forum il me faut le nombre de topics qu'il contient (nbt) et le nombre de posts dans tous ces topics (nbp)
Donc
forum <= topic <= post
mais également
forum <= compte des topics <= compte des posts.
Je suppose qu'il doit y avoir quelquechose de tres mal conçu dans ma requête vu qu'elle prend actuellement 3,5s à s'executer (et il n'y a que 6 forums, 200 topics et 2500 posts...
J'espère que vous pourrez m'aider car je patauge dans la semoule
Merci à ceux qui se pencheront sur mon cas![]()
Partager