0

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

users:
id   |  name   |  club_id |
1       Bob         4
2       Jane        5
3       Alex        4 
4       Paul        4
5       Tom         4

points:
user_id    |   club_id    |   amount(can vary)
1                 4             10
1                 2             10
2                 5             10
3                 4             10
3                 4             10
4                 4             10
3                 2             10
3                 4             10

I need (where users.club_id = 4 AND points.club_id = 4):
user_id    |    name    |   sum(amount)
3             Alex           30
1             Bob            10
4             Paul           10
5             Tom             0      

Tom は users に存在しますが、ポイントのエントリがないことに注意してください。したがって、Tom の合計は 0 になるはずです。

また、これをできるだけ効率的にしたいと考えています(したがって、ユーザーとポイントの両方に club_id = 4 を追加しました)

4

2 に答える 2

2

このクエリを試してください

select u.id, u.name, sum(if (p.amount is null, 0, p.amount)) as totalPoint
from 
user u 
left join 
(select * from point p where p.club_id = 4)p
on u.id = p.user_id
where u.club_id=4 
group by u.id

SQLフィドル

于 2013-05-21T10:32:25.607 に答える