我正在尝试建立一个由三个表组成的论坛。论坛表,主题表和帖子表。
在显示所有论坛的页面上,我希望它显示每个论坛的主题数量,以及该论坛中的帖子数量。很标准的东西。我遇到了MySQL查询的问题。这就是我正在使用的:
SELECT f.* , COUNT(t.topic_id) AS topics, COUNT(p.post_id) AS posts
FROM forums AS f
LEFT JOIN forums_topics AS t ON f.forum = t.forum_id
LEFT JOIN forums_posts AS p ON t.topic_id = p.topic_id
GROUP BY f.forum
这将为每个论坛返回一行,但主题计数和帖子计数返回相等。帖子计数是正确的,所以问题在于主题计数。
这些表的结构是forums_posts包含它所属主题的id号,它不包含它所属论坛的id号。 forums_topics表包含它所属论坛的ID号。
如何更正我的查询?如果我在forums_posts表中添加了一个帖子所属的forum_id会不会更好?
感谢您的建议。
答案 0 :(得分:0)
问题是COUNT(t.topic_id)
会计算主题ID。您需要计算不同数量的主题ID。
像
这样的东西SELECT f.* , COUNT( DISTINCT (t.topic_id) ) ...