数据库结构
表“申请人”
id org_id team_id
1 1 1
表“团队”
id name
1 Test
表“teams_members”
id team_id user_id
1 1 1
2 1 2
表“users_playeraccounts”
id user_id summoner_id rank_solo
1 1 1 5
2 1 2 8
3 2 3 7
select sum(rank_solo) as rank_sum,
max(rank_solo) as highest_rank,
count(tt.id) as members,
t.name,
o.team_id
from applicants o
join teams t on o.team_id = t.id
join teams_members tt on t.id = tt.team_id
join users_playeraccounts p on tt.user_id = p.user_id
where org_id = :org
group by team_id
这个offcourse给了我这样的结果
rank_sum highest_rank members name team_id
20 8 3 Test 1
有没有办法让我同时获得成员(member)数量及其玩家帐户
如果 1 个用户有 2 个,则为 2
还有一种方法让我将其保留为 1,这样它实际上只计算在 groups_members 中找到的行,而忽略 users_playeraccounts 中的条目?
我希望收到 2 和 3 作为查询结果。
最佳答案
您想要计算 tt.id
中不同的条目数,因此您可以这样做:
SELECT ... COUNT(DISTINCT tt.id) AS distinct_members ...
您将获得唯一值的数量,而不是为您提供具有非空 tt.id
的每一行的计数。
关于Mysql Group by 计数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821439/