如何计算特定匹配连接中另一行的条目

时间:2018-02-23 18:01:02

标签: php mysql sql

我一直在尝试创建一个SQL查询,显示每个帖子的评论数量。问题是,我一直试图添加的查询已经有LEFT JOIN。到目前为止,我已经成功地使用以下查询显示了一个帖子(虽然是一个错误的帖子)和整个表格中的评论总数:

SELECT
  *,
  Count(tbl_comments.comm_id) as CommentCount
 FROM
  tbl_posts 
  LEFT JOIN tbl_users ON tbl_posts.author = tbl_users.id 
  LEFT JOIN tbl_comments ON tbl_posts.post_id = tbl_comments.comm_id 
 WHERE
  tbl_users.role >= 3
 ORDER BY
  tbl_posts.post_time DESC
 LIMIT
  1

在Count部分注释后,查询返回最新的帖子。否则,它返回数据库中的第一个帖子,以及整个表中的总评论量。我将如何让它显示正确的(最新)帖子以及仅在该帖子上发表的评论?注释表有一个“父”字段,我在其中存储评论发布的帖子的ID,但我无法弄清楚查询中指定的位置。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果您想要每篇帖子的评论数量。你需要GROUP BY

SELECT
  tbl_posts.post_id,
  Count(tbl_comments.comm_id) as CommentCount
 FROM
  tbl_posts 
  INNER JOIN tbl_users 
     ON tbl_posts.author = tbl_users.id 
  LEFT JOIN tbl_comments 
     ON tbl_posts.post_id = tbl_comments.comm_id 
 WHERE
  tbl_users.role >= 3
 GROUP BY tbl_posts.post_id

注意:此加入条件对我来说很奇怪

ON tbl_posts.post_id = tbl_comments.comm_id 

应该是:

ON tbl_posts.post_id = tbl_comments.post_id

我的猜测comm_id是评论上的PK而不是FK。

答案 1 :(得分:0)

我使用group_by中的post.id,然后在每个帖子上执行count(tbl.comments.id)。这样,您就可以获得与每个帖子的单个帖子相关的独特评论数量。