我有三张表。
我这样试过:
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
但是它取了
projects
中的所有行,并且discussions
的计数与comments
的计数相同。 最佳答案
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
关于mysql - 如何从两个不同的表中获取两个字段的计数,并在mysql中对另一个表中的字段进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31603578/