J'ai 3 tables:MySQL - LEFT JOIN et COUNT()
- forums
id, nom, description
- fils
ID_thread, forum_id, user_id, titre, contenu, vues
- messages
post_id, ID_thread, AUTHOR_ID, contenu, la date
Ce que je veux faire est d'obtenir tous les threads dans un forum, et obtenir le compte de chaque thread. Donc, je reçois chaque thread (WHERE forum_id = quel que soit) et puis je LEFT JOIN avec les messages de la table afin de compter les résultats. Mais quelque chose ne fonctionne pas. Voici ma requête:
SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
FROM
threads t
LEFT JOIN
users u
ON
u.id = t.user_id
LEFT JOIN
posts p
ON
p.thread_id = t.thread_id
WHERE
t.forum_id = $this->forumID
Cette requête affichera seulement (je pense) les threads qui ont un post dessus. J'ai également essayé d'utiliser l'instruction GROUP BY mais cela fait une erreur MySQL ...
Comment puis-je résoudre ce problème?
----------- EDIT: J'ai essayé d'ajouter GROUP BY t.thread_id, cependant, comme je l'ai dit, les erreurs MySQL:
Vous avez une erreur votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité 'WHERE t.forum_id = 2' à la ligne 15
requête complète:
SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
FROM
threads t
LEFT JOIN
users u
ON
u.id = t.user_id
LEFT JOIN
posts p
ON
p.thread_id = t.thread_id
GROUP BY
t.thread_id
WHERE
t.forum_id = $this->forumID
EDIT 2:
Mon mauvais, j'ai mis la déclaration GROUP BY où il n'était pas destiné à être. C'est maintenant résolu.