0

我有一个包含用户的表和一个包含与用户表中的 id 相关的事件的表。在每个事件中,您都可以得分,我想从特定用户那里获得总分。

它看起来像这样:

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

Events

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

// event_id 与具有有关事件的特定数据的事件表相关。但这不相关。

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

谢谢和问候, Mottenmann

4

2 回答 2

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-05-05T16:20:00.880 回答
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在哪里。

于 2013-05-05T16:23:30.647 回答