我有以下表格。
我想从给定的表中获取所有玩家统计记录,包括单个玩家的记录。
- 选手姓名
- 位置
- 总游戏数
- 进球数
- 进球助攻总数。
- 总得分(总进球数 + 总助攻数 = 总得分)。
尝试后我想出了这个查询
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,这意味着玩家id 3 已经打进 7 球,同样如此。进球助攻总数=球员给守门员的助攻总数(助攻就像足球中的传球)。我需要计算用户完成的助攻或传球总数。
每个进球都会有两次助攻,每个助攻都是将球传给守门员的球员。我想计算球员传球或助攻的次数。例如,如果在gce_game_goal
table 中有 8 行或记录在 assis1_id 或 assistant2_id 列中的值为 3,这意味着 id 为 3 的玩家总共获得了 8 次助攻
.
如果您仍有任何疑问/问题,请告诉我,我会尝试改进我的问题
谢谢