【问题标题】:Getting total number of comments of post in mysql using count() always returns 1 even if no comment is present for particular post使用 count() 获取 mysql 中帖子的评论总数总是返回 1,即使特定帖子没有评论
【发布时间】:2016-05-17 03:53:42
【问题描述】:

我的数据库中有两个表

1.故事(id、标题、内容)

2.Comments (id,story_id,comment) 这里的story_id 是外键,指的是stories 表中的id

为了获取特定帖子的 cmets,我正在使用此查询

SELECT stories.*,COUNT(stories.id) as totalcomment
FROM stories LEFT JOIN comments ON stories.id=comments.story_id  GROUP BY stories.id 

问题是我会得到 totalcomment 的值是 1 即使没有特定帖子的 cmets 它应该是 0,但我会得到 count(storie.id) 结果为 1

【问题讨论】:

  • 你要数Comments.story_id,还要按Comments.story_id分组
  • Thakns 老兄它的工作:),请把它作为答案

标签: php mysql codeigniter join


【解决方案1】:

您需要计算Comments.story_id 并按Comments.story_id 分组。

每个故事都有多个 cmets,因此当您按 stories.id 分组时,结果始终为 1,您需要计算 Comments.story_id,以便对于每个故事,它会同时计算所有 cmets把它分组。

SQL

SELECT stories.*,COUNT(Comments.story_id) as totalcomment
FROM stories LEFT JOIN comments ON stories.id=comments.story_id  GROUP BY stories.id, Comments.story_id 

【讨论】:

  • 我有一个疑问,为什么我需要两个 grpup by 子句
  • group by 可能会受到影响,因为您有多行 story_id,因此在 group by 之后,它会折叠为一个并且 count 可以正常工作。
猜你喜欢
  • 2021-03-14
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
相关资源
最近更新 更多