我一直在尝试创建一个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,但我无法弄清楚查询中指定的位置。提前谢谢。
答案 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)
。这样,您就可以获得与每个帖子的单个帖子相关的独特评论数量。