我有以下查询:
SELECT
*
FROM `SAS_applications`
INNER JOIN `SAS_forms` on SAS_applications.form_id = SAS_forms.fid
ORDER BY SAS_applications.id DESC
LIMIT 10;
此查询工作正常,但在添加另一个表以包含回复/注释后,我遇到了一些困难,计算每个“应用程序”的一部分有多少注释。
我试图找到一种方法,我可以计算(*)SAS_comments中的条目数量与原始查询中每个返回的相同form_id,我可以通过执行单独实现这一点
SELECT count(*) FROM `SAS_comments` WHERE form_id = 1
有谁知道我怎么能做到这一点?我尝试了各种连接和嵌套,但我的SQL语法知识并不是最好的。
你可以使用correlated subquery:
SELECT *,
(SELECT count(*) FROM SAS_comments WHERE form_id = SAS_forms.fid)
FROM ...
您需要再使用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