0

私は3つのテーブルを持っています:

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

今、私は学校のランキングを取得したいと思います - すべてのユーザーのstage1とstage2の2列の合計です。

4

3 に答える 3

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

そして私は本当にあなたがインデックスを持っていることを望みます。

于 2013-02-15T13:12:41.183 に答える
0

このクエリを試してください。これは単なる仮定です。テスト用のデータをいくつか提供してください

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 
于 2013-02-15T13:04:22.533 に答える
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

それが役に立てば幸いです、頑張ってください:)

于 2013-02-15T13:07:40.253 に答える