MySQL 连接表和使用 COUNT 函数的问题
Posted
技术标签:
【中文标题】MySQL 连接表和使用 COUNT 函数的问题【英文标题】:Trouble with MySQL joining tables and using COUNT function 【发布时间】:2011-05-09 15:16:16 【问题描述】:我正在尝试建立一个由三个表格组成的论坛。一个论坛表、一个主题表和一个帖子表。
在显示所有论坛的页面上,我希望它显示每个论坛的主题数量,以及该论坛中的帖子数量。很标准的东西。但是,我在使用 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 会更好吗?
感谢您的建议。
【问题讨论】:
【参考方案1】:问题是COUNT(t.topic_id)
将计算主题ID。您需要计算不同的主题 ID 数量。
有点像
SELECT f.* , COUNT( DISTINCT (t.topic_id) ) ...
【讨论】:
Doh,我想它会像那样简单。非常感谢。 欢迎您。如果这解决了您的问题,请将问题标记为已回答。以上是关于MySQL 连接表和使用 COUNT 函数的问题的主要内容,如果未能解决你的问题,请参考以下文章