J'ai créé un forum et j'aimerais créer une requête me permettant de sélectionner la date du dernier message posté sur une discussion et le nom de son auteur.
J'ai une table forum_post, forum_topic et forum_group.
Les messages sont stockés dans la table forum_post.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 DROP TABLE IF EXISTS forum_post; CREATE TABLE forum_post ( forum_post_id INT AUTO_INCREMENT PRIMARY KEY, forum_post_date DATETIME, forum_post_userid INT, forum_post_topicid INT, forum_post_article TEXT ); DROP TABLE IF EXISTS forum_topic; CREATE TABLE forum_topic ( forum_topic_id INT AUTO_INCREMENT PRIMARY KEY, forum_topic_date DATETIME, forum_topic_userid INT, forum_topic_groupid INT, forum_topic_title VARCHAR(255) ); DROP TABLE IF EXISTS forum_group; CREATE TABLE forum_group ( forum_group_id INT AUTO_INCREMENT PRIMARY KEY, forum_group_date DATETIME, forum_group_userid INT, forum_group_groupid INT, forum_group_title VARCHAR(255), forum_group_desc VARCHAR(255) );
Les discussions sont stockées dans la table forum_topic.
Les forum sont stockés dans la table forum_group.
Pour le moment, j'arrive à sélectionner la date du dernier message :
WHERE forum_topic_groupid=3 : j'indique le n° du topic (3 n'est qu'un exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT *,MAX(forum_post_date) as md FROM forum_topic LEFT JOIN forum_post ON forum_topic_id=forum_post_topicid WHERE forum_topic_groupid=3 GROUP BY forum_topic_id ORDER BY md DESC,forum_topic_date DESC LIMIT 0,20;
Mon problème est que je n'arrive pas à sélectionner le nom (où plutôt forum_post_userid) du dernier auteur sur une discussion particulière.
Pour obtenir la date,
je groupe les messages par topic : GROUP BY forum_topic_id
Je sélectionne la date avec MAX(forum_post_date)
Lors du groupement, une seule ligne n'est sélectionnée.
J'aimerais que cette ligne soit celle correspondant au message le plus récent.
La requête que j'ai faite fonctionne pour la date, mais pas pour forum_post_userid.
Est-il possible de faire en sorte que lors du groupement, les messages soient triés par date ?
Ainsi, la ligne affichée corespondrait au dernier message posté pour une discussion.
Partager