我有三个表projects
,discussions
和comments
。
我已经这样尝试过了:
SELECT p.PRO_Name, COUNT( d.DIS_Id ) AS nofdisc, COUNT( c.COM_Id ) AS nofcom
FROM projects p
LEFT JOIN discussions d ON p.PRO_Id = d.PRO_Id
LEFT JOIN comments c ON d.DIS_Id = c.DIS_Id
GROUP BY p.PRO_Name LIMIT 0 , 30
但是它要从中取出所有行discussions
,所以计数与的计数comments
相同discussions
。
count
计算null
给定参数的非值数量。您拥有的联接将为每个注释创建一行,并且dis_id
和com_id
都不是null
,因此它们的计数将相同。由于这些是ID,因此您只需计算distinct
出现次数即可获得所需的响应:
(编辑:order by
根据注释中的请求添加了一个子句)
SELECT p.PRO_Name,
COUNT(DISTINCT d.DIS_Id) AS nofdisc,
COUNT(DISTINCT c.COM_Id) AS nofcom
FROM projects p
LEFT JOIN discussions d ON p.PRO_Id = d.PRO_Id
LEFT JOIN comments c ON d.DIS_Id = c.DIS_Id
GROUP BY p.PRO_Name
ORDER BY 2,3
LIMIT 0 , 30
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句