0
我想写一个SQL查询,为每个用户返回一行。该行必须包含分配给该用户的学校计数以及分配给该用户的所有学校中的分数总和。从关联的表中选择行数无子选择
表:
users (id, email)
schools (id, user_id, points (int))
关系users
到schools
是一个一对多的。
我这个地步得到:
select u.id, u.email,
count(*) as total_schools,
sum(points) as total_points
from users u
left join schools s
on u.id = s.user_id
group by u.id
但是这完全不是那么回事。 count(*) as total_school
是错误的。它返回用户行的数量,而不是分配的学校行的数量。
我该如何得到这个数字?
再次检查结果。它应该返回分配的学校数量,除非用户没有分配学校。如果用户可以多次分配到学校,请将COUNT(*)改为COUNT(s.user_id)或COUNT(DISTINCT s.id)。 –