从另一个表添加计数以使用内部联接进行查询

时间:2017-12-18 18:27:06

标签: sql sqlite

我有以下查询:

SELECT 
    * 
FROM `SAS_applications` 
INNER JOIN `SAS_forms` on SAS_applications.form_id = SAS_forms.fid 
ORDER BY SAS_applications.id DESC 
LIMIT 10;

以及以下SQLite设置: enter image description here

此查询工作正常,但在添加另一个表以包含回复/评论后,我遇到了一些困难,计算每个应用程序的一部分有多少注释。

enter image description here

我试图找到一种方法可以计算(*)原始查询中每个返回的相同form_id的SAS_comments内的条目数量,我可以通过

单独实现这一点
SELECT count(*) FROM `SAS_comments` WHERE form_id = 1

有谁知道我怎么能做到这一点?我尝试了各种连接和嵌套,但我的SQL语法知识并不是最好的。

2 个答案:

答案 0 :(得分:1)

您可以使用correlated subquery

SELECT *,
       (SELECT count(*) FROM SAS_comments WHERE form_id = SAS_forms.fid)
FROM ...

答案 1 :(得分:0)

您需要再使用SAS_comments,Count和Group By进行一次加入,您的代码应该接近于此

SELECT 
    count(`SAS_comments`.form_id), `SAS_comments`.id
FROM `SAS_applications` 
INNER JOIN `SAS_forms` on SAS_applications.form_id = SAS_forms.fid 
JOIN `SAS_comments` on `SAS_forms`.form_id = `SAS_comments`.form_id
GROUP BY `SAS_comments`.id
ORDER BY SAS_applications.id DESC