在内容列表的内容项目里可以添加一个评论的总数,有两种方法,一种是可以把内容表与评论表拼接在一起,然后用 COUNT 统计评论的数量。另一种方法就是可以使用一个子查询(Subquery),在查询中嵌套的这个查询就是子查询。
下面可以试一下拼接以后再统计评论总数的查询,直接在数据库客户端执行一段查询。用 SELECT 选择所有的东西,来自 post 这个数据表,执行一下,得到的就是一个内容列表。
接着再用 left join 合并一下 comment,在 on 的后面设置一下条件,条件是 comment 的 postId 等于 post 表里的 id 。执行一下这段查询。
得到的结果就是把 post 还有 comment 表拼接到一块儿了。注意这里 id=1 的这个内容出现了两回。这是因为这个内容有两个相关的评论数据。
在这段查询里,加上一个 GROUP BY,按 post.id 分下组。 执行一下,这次会提示一个错误。因为在查询里设置了按 post.id 分组。
在选择的字段里,可以添加一个 post.id 再加上一个 post.title 。然后可以试一下 GROUP_CONCAT 这个功能,它可以把多行数据合并成一行。合并的是 comment 表里的 id 栏目。执行一下。
你会发现这次查询的结果里面有内容的 id 还有标题,最后这个栏目是这个内容的相关评论的 id 列表。中间用逗号分隔开了。
这里我们要做的是统计一下评论 id 的数量,所以可以用一下 COUNT ,统计 comment.id,后面用一个 as 给这个栏目起个名字叫 totalComments。
执行一下这段查询,这次查询出来的结果里面会出现一个 totalComments 栏目,栏目里的值就是这个内容相关的评论数量。