计算不同表中键的引用数

时间:2010-11-16 20:16:45

标签: sql mysql

我有以下SQL查询:

SELECT 
    g.name AS gname,  
    COUNT(u.id) AS noMembers,
    f.name AS client,
    p.name AS projectName,
    g.formed_date AS formedDate

FROM `groups` as g
JOIN users AS u ON u.group_id = g.id
JOIN users AS f ON g.client_id = f.id
JOIN projects AS p ON p.group_id = g.id

我想要完成的是:用一个SQL查询来获取当前组的名称,其中的成员数(所有用户都在同一个不同的表中,称为用户),名称该小组目前正在开展的项目以及该小组正在开展工作的客户。必须对groups表中的每个组进行此操作。

当我执行上面的查询时,它不返回组内的用户数,而是返回更多(虽然不是表中的所有用户),只返回1行结果,尽管应该有更多。< / p>

1 个答案:

答案 0 :(得分:1)

COUNT只会为整个选择返回一行。你想要做的是在你的JOIN语句之后使用GROUP BY。

GROUP BY g.name

这将为每个不同的组名称提供一行。它还将仅返回客户端,projectName和formedDate的每个组名称的一个结果,因此,如果每个组中有多个不同的可能性,您可能希望按多列分组以获取更多详细信息,例如:

GROUP BY g.name,f.name