2014-06-20 2 views
1

그래서 나는 mysql에 toplist를 만들고 싶다. 두 명의 테이블, 사용자 및 팀이 있습니다.MYSQL Toplist by teammember points

내가 가진 사용자에

: t_id, teamname을 나는 toplist을하고 싶습니다

을 leaderid : ID, 이름, 포인트, 나는이 팀에서

을 teamid. 가장 많은 점수를 가진 10 개 팀.

내가 원하는 것을 이해할 수 있기를 바랍니다.

답변

0

상위 10 점을 제공하는 하위 쿼리를 사용하여 점수 합계를 계산 한 다음이 방법을 사용하면 각 팀의 점수 합계가있는 팀 정보가있는 쿼리와이 결과를 결합해야합니다 당신은 당신이 단순히

select t.*,sum(u.points) allpoints 
    from teams t 
    join users u 
    on(t.t_id= u.teamid) 
    group by t.t_id 
    order by allpoints desc 
    limit 10 
에 의해 제한 및 순서를 사용할 수있는 넥타이 시나리오에 대해 걱정하지 않는 경우,이 점

select t2.* from 
(select t.*,sum(u.points) allpoints 
from teams t 
join users u 
on(t.t_id= u.teamid) 
group by t.t_id 
) t2 
join 
(select sum(points) allpoints 
    from users 
    group by teamid 
    order by allpoints desc 
    limit 10) tp 
on(t2.allpoints = tp.allpoints) 

에 대한 상위 10 개 팀이 개 팀의 점수 넥타이 포함됩니다됩니다