2013-02-15 50 views
0

組由結果通過SUM我有3個表:MySQL的 - 2列

user(id, name, id_school) 
school(id, name) 
result(id_user, stage1, stage2) 

現在我想獲得學校的排名 - 是2列的總和:stage1和stage2所有用戶。

+1

請顯示您已經嘗試過的陳述。 – 2013-02-15 12:53:35

回答

0

試試這個查詢。它只是assumption.please提供一些數據進行測試

SELECT 
    s.id, 
    s.name AS SchoolName 
    (r.S1 + r.S2) AS Rank 
FROM school as s 
LEFT JOIN user as u ON u.id_school = s.id 
LEFT JOIN (SELECT id_user , SUM(stage1) as S1 , SUM(stage2) FROM result GROUP BY id_user) as r ON r.id_user = u.id 
GROUP BY s.id 
ORDER BY Rank DESC 
0

我會做這樣的事情:

SELECT school.name, SUM(result.result1 + result.result2) 
FROM school LEFT JOIN user ON (user.id_school = school.id) LEFT JOIN result ON (result.id_user = user.id) GROUP BY school.id 

希望它能幫助,祝你好運:)

2

顯得過於簡單:

select s.name as school, sum(stage1)+sum(stage2) as rank 
    from result r 
    join user u on u.id=r.id_user 
    join school s on s.id=u.id_school 
group by s.id 

我真的希望你有索引。

+0

isnt s.name應該在groupby子句中嗎? – DevelopmentIsMyPassion 2013-02-15 13:14:30

+0

@AshReva不在mysql中,在這裏稱之爲「優化」) – 2013-02-15 13:16:08

+0

看來我確實錯過了:( – DevelopmentIsMyPassion 2013-02-15 13:16:26