Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL-三重内部连接和求和_Mysql_Sum_Inner Join - Fatal编程技术网

MYSQL-三重内部连接和求和

MYSQL-三重内部连接和求和,mysql,sum,inner-join,Mysql,Sum,Inner Join,这是我的桌子: 邀请 id | inviteFromID | inviteToID | timestamp | joined --------------------------------------------------- 1 | 1 | 234567890 | 2013-02-02| 1 2 | 1 | 345678901 | 2013-02-02| 1 玩家: id | FacebookID | first_name | last_

这是我的桌子: 邀请

id | inviteFromID | inviteToID | timestamp | joined
---------------------------------------------------
1  | 1            | 234567890  | 2013-02-02| 1
2  | 1            | 345678901  | 2013-02-02| 1
玩家:

id | FacebookID | first_name | last_name
---------------------------------------------------
1  | 123456789  | Dude       | Master
2  | 234567890  | Super      | Man
3  | 345678901  | Bat        | Man  
轮次:

id | PlayerID | round | played | status
---------------------------------------------------
1  | 1        | 1      | 1     | 1
2  | 1        | 2      | 1     | 0
3  | 2        | 1      | 1     | 1
在这种情况下: ID=1的玩家将拥有1分,ID=2的玩家将拥有1分。 但是ID 1和ID 2总共有两点说明

关系: -player.id=invites.inviteFromID -player.id=rounds.playerID

说明: 桌面玩家的用户可以邀请ppl参加游戏。比赛分两轮进行。 当用户玩游戏时,回合表更新为played=1,如果赢了,用户ID和状态为1,如果不赢,状态为0

为每个用户获取积分不是问题

问题: …问题是,每个被邀请的用户也会给邀请者自己的观点

因此,如果用户A赢了2轮=邀请B的2分,B玩了3轮,赢了3轮=3分,那么用户A的总积分是A的5分+B的积分。 对于所有被邀请参加游戏的用户A来说都是如此,所以如果用户A邀请了B、C和D,他也会得到他们的分数

我被困在这里了。我试着加入玩家,邀请和轮换,但都没用,我现在被卡住了

最好的输出是

谁能帮帮我吗

编辑: 函数-getPointsFromPlayer已弃用:点数不再可用


解决了这个问题,我认为它更简单:

        SELECT 
            SUM(CASE WHEN r.status = 1 THEN 1 ELSE 0 END) AS won_rounds
            FROM invites i
            INNER JOIN rounds r ON  i.inviteToID = r.facebookID
            WHERE r.played = 1 AND i.joined = 1 AND i.inviteFromID = :facebookID  

不过,谢谢大家

让我编辑一下,对不起!您需要更新数据库的查询,但还没有。我现在正在编写后端功能。
SELECT 
    p.points AS OwnPoints, count(p.id) AS UsersCount, SUM(pi.points) AS SumPoints 
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 = :inviter AND i.joined = 1 
GROUP BY 
    p.id
        SELECT 
            SUM(CASE WHEN r.status = 1 THEN 1 ELSE 0 END) AS won_rounds
            FROM invites i
            INNER JOIN rounds r ON  i.inviteToID = r.facebookID
            WHERE r.played = 1 AND i.joined = 1 AND i.inviteFromID = :facebookID