【发布时间】:2023-03-22 10:46:01
【问题描述】:
我有以下表格。
我想从给定的表中获取所有玩家统计记录,包括单个玩家的记录。
- 玩家姓名
- 位置
- 玩过的游戏总数
- 进球数
- 助攻总数。
- 总得分(总进球数 + 总助攻数 = 总得分)。
尝试后我想出了这个查询
SELECT SQL_CALC_FOUND_ROWS
CONCAT(u.first_name, ' ', u.last_name) as player_name,
p.position,
COUNT(g.id)
FROM
gce_player p
LEFT JOIN
gce_user u ON(u.id = p.user_id)
LEFT JOIN
gce_game_team_lineup gtl ON(gtl.player_id = p.id)
LEFT JOIN
gce_game_team gt ON(gt.id = gtl.game_team_id)
LEFT JOIN
gce_game_goal gg ON(gg.player_id = p.id)
LEFT JOIN
gce_game g ON(g.id = gt.game_id)
GROUP BY p.id
ORDER BY p.id asc
上面的查询返回正确的记录,直到玩了总游戏数,在此之后我遇到了获取正确记录的问题,非常感谢任何形式的帮助。
这里是sqlfiddle的链接,如果你想查看架构,我也添加了一些测试数据。
谢谢。
更新:
这里有一些规则需要记住。
进球数 = 球员总进球数。例如,如果在
gce_game_goal表中有 10 行有player_id as 4的值表示该球员已经进了10球 我需要为单个玩家获取此记录,并且 同样,如果有 7 行其中 player_id 的值为 3 this 表示 id 为 3 的球员已经进了 7 个球,同样。进球助攻总数 = 球员给予守门员的助攻总数(助攻就像足球中的传球)。我需要 计算用户完成的助攻或传球总数。
每个进球都会有两次助攻,每个助攻都是球员 谁将球传给一个golaie。我想计算通过次数 或球员给予的协助。例如如果在gce_game_goal表中有 8 行或记录的值为 3 assis1_id 或 assistant2_id 列,这意味着 id 为 3 的玩家有 总共得到8次助攻
.
如果您仍有任何疑问/问题,请告诉我,我会尝试改进我的问题
谢谢
【问题讨论】:
-
究竟是什么不起作用?哪个值,你期望什么,返回什么?是否有错误,哪些错误?
-
Total number of assist for goals.是什么? -
对不起,让您感到困惑,我正在更新我的所有细节,请稍等几分钟,谢谢。
-
您只使用数据库吗?你可以访问像 C++ 甚至 PHP 这样的服务器吗?我只能想象一旦每个表有大约 50 行,最后一个查询有多慢。如果是这样,我建议你在那里处理你的计算。它更容易,更快捷。虽然代码行数更多,但您可能会花费同样的时间来进行类似这些工作的深奥查询。
-
@JoeCoderGuy 我正在使用 PHP。
I recommend you handle your computation there.这是什么意思?