我有下面的SQL表,我基本上是想为Ralph在2018年打过的每场比赛抽出一张表格,并列出总得分。
拉尔夫(Ralph)有一个unique_id,但可以在多个球队或不同位置上比赛。他参加比赛的每一年,都会为每个球队和/或职位将新的记录输入到球员信息表中。
游戏数据表的玩家ID可能同时使用了Ralph的两个玩家信息记录,因此,例如,游戏数据的记录1和2都是Ralph的,他的实际总得分为18(12 + 6)。我不需要将这些点加在一起,因为在PHP中可以很容易地做到这一点,但是我确实需要拉出两个记录。
------------------------------
Player Info as pi
------------------------------
id | unique_id | year | name | team | pos
1 5000 2018 Ralph 5 F
2 5000 2018 Ralph 5 C
3 5600 2018 Bill 5 G
4 5000 2017 Ralph 4 F
5 2688 2016 Mike 6 G
------------------------------
Game Info as gi
------------------------------
id | team 1 | team 2
1 5 6
2 6 5
3 8 3
4 6 2
------------------------------
Game Data as gd
------------------------------
id | game_info_id | player_id | Points
1 1 1 12
2 1 2 6
3 2 1 4
4 4 5 6
该表应显示pi.id,pi.unique_id,gi.id,gd。* WHERE gd.player_id = Ralph的pi.id和pi.year = 2018中的任何一个
这里提供了任何帮助,这似乎有点超出我的看法了。
答案 0 :(得分:0)
像这样加入表格:
select
pi.id, pi.unique_id, gi.id, gd.*
from playerinfo pi
inner join gameinfo gi on pi.team in (gi.team1, gi.team2)
inner join gamedata gd on gd.game_info_id = gi.id and gd.player_id = pi.id
where pi.name = 'Ralph' and pi.year = 2018