【问题标题】:Trouble with MySQL joining tables and using COUNT functionMySQL 连接表和使用 COUNT 函数的问题
【发布时间】: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 会更好吗?

感谢您的建议。

【问题讨论】:

    标签: mysql count


    【解决方案1】:

    问题是COUNT(t.topic_id) 将计算主题ID。您需要计算不同的主题 ID 数量。

    有点像

    SELECT f.* , COUNT( DISTINCT (t.topic_id) ) ...
    

    【讨论】:

    • Doh,我想它会像那样简单。非常感谢。
    • 欢迎您。如果这解决了您的问题,请将问题标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2016-02-01
    • 2012-09-18
    • 2017-09-07
    • 2012-04-09
    • 1970-01-01
    • 2011-06-18
    相关资源
    最近更新 更多