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