计算特定用户的两个表的总和

时间:2013-05-05 16:17:35

标签: php mysql sql

我有一个带有用户的表和一个表,其中包含与用户表中的id相关的事件。在每个活动中,您可以制作积分,我希望从特定用户获得总积分。

看起来像这样:

Users
+----+----------+
| id | username |
+----+----------+

Events

+----------+---------+--------+
| event_id | user_id | points |
+----------+---------+--------+

// event_id与事件表相关,其中包含有关事件的特定数据。但那不相关。

最好的方法是从用户那里获取数据以及他在一次查询中得到的总分数。

谢谢和问候, Mottenmann

2 个答案:

答案 0 :(得分:1)

  

..获取用户的数据以及他在一次查询中获得的总分数。

您需要先连接两个表,以便操作数据。下面的查询使用INNER JOIN,如果Events上至少有一个匹配记录,则只包含结果列表中的用户。如果您想要让所有用户在另一个表中没有单个匹配记录,请改用LEFT JOIN

SELECT  a.ID, a.username, SUM(b.points) totalPoints
FROM    Users a
        INNER JOIN Events b
            ON a.ID = b.user_ID
GROUP   BY a.ID, a.username

要进一步了解联接,请访问以下链接:

答案 1 :(得分:1)

  

“在每个赛事中你都可以得分,我想得到总得分   来自特定用户。“

你可以这样做:

select sum(e.points) as points from users u
left join events e ON (u.id = e.user_id)
WHERE u.id = {$id}

其中{$id}是用户的ID。