【问题标题】:MYSQL - SUM points from three tablesMYSQL - 三个表的 SUM 点
【发布时间】:2013-04-09 23:51:49
【问题描述】:

我有以下 SQL 语句(到目前为止):

SELECT p.facebookID,p.points,pi.facebookID,pi.points, SUM(pi.points) FROM player AS p 
INNER JOIN invites AS i ON p.id = i.inviteFromID 
INNER JOIN player AS pi ON i.inviteToId  = pi.facebookID
WHERE p.id = 1 GROUP BY pi.points    

这将告诉我,由 UserId = 1 邀请的用户以及他们获得了哪些积分。

目标:
我需要所选 UserId 的所有邀请点的总和。
我怎样才能做到这一点?我的方法对吗?

【问题讨论】:

    标签: mysql sum inner-join


    【解决方案1】:

    您不应该按 pi.points 分组,而是按用户 ID 分组,我相信...试试这个

    SELECT p.facebookID,p.points,pi.facebookID,pi.points, SUM(pi.points) FROM player AS p 
    INNER JOIN invites AS i ON p.id = i.inviteFromID 
    INNER JOIN player AS pi ON i.inviteToId  = pi.facebookID
    WHERE p.id = 1 GROUP BY p.id
    

    假设 p.id 是您的用户 ID

    告诉我这是如何工作的

    【讨论】:

    • 它就像一个魅力。只需要删除 pi.points (还不想要用户的积分。)非常感谢!
    • 是否有可能从多少玩家那里获得积分?那将是我的最后一个也是最后一个问题:)
    • hmm - 我对你所说的“积分有多少玩家”的意思有点困惑 - 可能类似于:SELECT count(p.id) FROM player AS p INNER JOIN 邀请 AS i ON p.id = i.inviteFromID INNER JOIN player AS pi ON i.inviteToId = pi.facebookID
    • 这只是一个猜测,如果没有在本地进行真正的测试,这有点难说 - 知道我的意思吗?
    • 我的意思是...... userId 1 有两个邀请,点为 10 和 23(即) - 所以邀请者将从两个用户那里获得 33 点。我需要让用户..如果你现在知道我的意思了。希望。 :)
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2022-11-11
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多