【问题标题】:MYSQL COUNT HAVING IssueMYSQL COUNT HAVING 问题
【发布时间】:2013-02-06 19:42:54
【问题描述】:

我有 2 个表,一个论坛主题表和一个论坛 cmets。

我正在尝试获取所有论坛主题的列表,并计算每个主题中有多少 cmets。

cmets 表包含每个主题的论坛主题的 PK。

我试过了

SELECT
  `forum_topics`.`topic_id`,
  `forum_topics`.`topic_name`,
  `forum_topics`.`topic_info`, 
  `forum_topics`.`topic_img`,
  `forum_topics`.`creation_date`,
  `forum_topics`.`is_deleted`
FROM
  `forum_topics`
JOIN
  `forum_comments`
ON
  `forum_comments`.`topic_id` = `forum_topics`.`topic_id`
GROUP BY
  `forum_topics`.`topic_id`
HAVING
  COUNT(`forum_comments`.`comment_id`) >= 0
  AND `forum_topics`.`review_status` = 'reviewed';

这似乎没有返回任何结果,但也没有错误

希望有人能帮忙

【问题讨论】:

  • 您的数据库结构示例?
  • 我在您的查询中没有发现任何问题。你确定你在forum_comments有一些记录,右边topic_id
  • 您确定状态正确吗?
  • 不是答案,而是一些观察:HAVING COUNT 条件应该是不必要的,因为您已内连接到forum_comments,而review_status = 'reviewed' 条件应该在where 子句中,不是having 子句;不仅如此,如果您想要 所有 个主题(不仅仅是所有 已审核 个主题),您可能还是应该删除该条件。
  • 我还没有任何 cmets 因此我为什么尝试 >= 0

标签: php mysql join count having


【解决方案1】:

尝试以下方法:

SELECT
  `forum_topics`.`topic_id`,
  `forum_topics`.`topic_name`,
  `forum_topics`.`topic_info`, 
  `forum_topics`.`topic_img`,
  `forum_topics`.`creation_date`,
  `forum_topics`.`is_deleted`,
  `forum_topics`.`review_status`,
  COUNT(`forum_comments`.`comment_id`) count_comments
FROM
  `forum_topics`
LEFT JOIN
  `forum_comments`
ON
  `forum_comments`.`topic_id` = `forum_topics`.`topic_id`
order by case when `forum_topics`.`review_status` = 'reviewed' then 1 else 2 end, 
         count_comments desc

【讨论】:

    【解决方案2】:

    试试这个

    SELECT forum_topics.topic_id, forum_topics.topic_name, forum_topics.topic_info, 
       forum_topics.topic_img, forum_topics.creation_date, forum_topics.is_deleted
    FROM forum_topics 
    JOIN forum_comments ON forum_comments.topic_id = forum_topics.topic_id 
    WHERE forum_topics.review_status = 'reviewed'
    GROUP BY forum_topics.topic_id
    HAVING COUNT(forum_comments.comment_id) >= 0
    

    【讨论】:

    • 谢谢,看来 LEFT JOIN 修复了它。我给你打勾是因为我更了解你的询问。标记答案也是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2021-01-30
    • 1970-01-01
    相关资源
    最近更新 更多