【发布时间】:2015-05-22 15:34:20
【问题描述】:
我有以下情况:
表:用户:user_id、用户名、...
表:登录:user_id、login_date、...
表:point:user_id、points、point_time
连接将基于 users.user_id 与其他表。
现在,我想计算所有登录次数以及用户获得的所有积分的总和。
现在,当我这样做时:
select users.user_id,count(*) from users
inner join login on users.user_id=login.user_id
group by users.user_id
它返回计数为 36(例如)。 每当我跑步时:
select users.user_id,count(*),sum(points) from users
inner join point on users.user_id=point.user_id
group by users.user_id
返回总和为 400(例如),计数为 2。
但如果我将这两个查询结合起来:
select users.user_id,count(*),sum(points) from users
inner join login on users.user_id=login.user_id
inner join point on users.user_id=point.user_id
group by users.user_id
它返回计数为 72 (36 * 2),总和为 800 (400 *2)。
两次,因为存在多个 userId。
我尝试了几种方法,例如与 distincts 结合,但似乎没有任何效果。请帮忙。
如果可以单独使用连接就更好了。提前致谢。我正在使用 mysql 和 PHP。
【问题讨论】: