我有一个存储过程(称为sprocGetArticles),它返回文章表中的文章列表.此存储过程没有任何参数.
用户可以为每篇文章留下评论,并将这些评论存储在由文章ID链接的评论表中.
有什么办法可以在sprocGetArticles存储过程中对返回列表中的每个articleid进行注释计数,所以我只需要对数据库进行一次调用吗?
我的问题是我需要文章ID来进行我似乎无法声明的计数.
这是最好的方法吗?
SQL允许将整个标量子查询作为投影列返回.子查询可以与父查询相关联.因此很容易计算子查询中的注释,这些子查询计算给定文章ID的注释:
SELECT a.*, (
SELECT COUNT(*)
FROM Comments c
WHERE c.article_id = a.article_id) AS CountComments
FROM Articles a;
Run Code Online (Sandbox Code Playgroud)
请注意,每次计算注释都非常昂贵,最好将计数保留为Article属性.