如何从两个不同的 table 中获取两个字段的计数,并将来自另一个 table 的字段分组到 mysql

How to get count of two fields from two different table with grouping a field from another table in mysql

我有三个表 projectsdiscussionscomments

我试过这样:

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_idcom_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