Bonsoir,

Je viens vers vous suite à un problème qui me bloque depuis un bon moment sur une requête SQL.

J'ai une table contenant les messages d'un forum, et chaque entrée a une date en timestamp. Ce que je souhaite, c'est faire une sorte de courbe d'activité en regroupant les messages par membres et par mois.

J'ai réussi en partie avec la requête suivante qui marche nickel, en plus d'être rapide :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT DATE_FORMAT(FROM_UNIXTIME(post_time), '%Y %m') as date, COUNT(*) as count
FROM phpbb_posts
WHERE poster_id='2'
GROUP BY date
Le problème, c'est que cette requête n'affiche pas les mois où aucun message n'a été posté. Et je voudrai que ce soit le cas, sinon mes stats seraient inexactes.

J'ai donc cherché sur des forums, et j'ai trouvé une piste : faire une table annexe où je liste l'intégralité des mois, pour ensuite faire une jointure avec la table des messages afin de ne pas zapper les mois sans messages.
Voici ce que ça donne... Malheureusement pour moi, ça ne marche pas, ça me donne exactement le même résultat que la précédente requête (et c'est beaucoup plus lent).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT DATE_FORMAT(FROM_UNIXTIME(phpbb_posts.post_time), '%Y %m') as date, COUNT(*) as count
FROM listemois
LEFT JOIN phpbb_posts ON listemois.dateYM = DATE_FORMAT(FROM_UNIXTIME(phpbb_posts.post_time), '%Y %m')
where phpbb_posts.poster_id='2'
GROUP BY date
Avez-vous une idée de comment je pourrai m'en sortir ?