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