gpt4 book ai didi

MYSQL - 三重内部连接和 SUM

转载 作者:行者123 更新时间:2023-11-30 23:19:59 24 4
gpt4 key购买 nike

这是我的表格:
邀请

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邀请了2所以ID = 1总共有两点(下面解释)。

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

描述:
来自“玩家”表的用户可以邀请其他人参加游戏。游戏以回合制进行。
当用户玩游戏时,“rounds”表更新为“played = 1”和 userId 以及“status = 1(如果赢了)或 status = 0(如果没有赢)”。

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

问题:
..问题是,每个被邀请的用户也会给邀请者他的积分。

所以如果用户A(赢2局=2分)邀请了B,B玩了3局赢了3局(=3分),那么用户A的总积分是5(A的积分+B的积分) .
这对所有受邀参加游戏的用户 A 都是如此,因此如果用户 A 邀请了 B、C 和 D,他也将获得他们的积分。

我卡在这里了。我尝试过内部加入玩家、邀请和回合,但没有成功,我现在被卡住了。

最佳输出将是

PlayerID | ownPoints | otherPoints | totalPoints
---------------------------------------------------
1 | 1 | 1 | 2
2 | 1 | 0 | 1

有人可以帮帮我吗? :)

编辑:
函数 - getPointsFromPlayer(已弃用:“points”不再可用)

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

不过,谢谢大家!

关于MYSQL - 三重内部连接和 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com