我有以下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>
答案 0 :(得分:1)
COUNT只会为整个选择返回一行。你想要做的是在你的JOIN语句之后使用GROUP BY。
GROUP BY g.name
这将为每个不同的组名称提供一行。它还将仅返回客户端,projectName和formedDate的每个组名称的一个结果,因此,如果每个组中有多个不同的可能性,您可能希望按多列分组以获取更多详细信息,例如:
GROUP BY g.name,f.name