MySQL - LEFT JOIN - 它如何获得我需要的值
MySQL - LEFT JOIN - How do it get the value that i need
我有三个 table:"playerstat"、"player" 和 "game"。
"playerstat"table第一次是空的,"players"已经有玩家选择,table"game"也有一个可以分配统计数据和球员的条目。
现在我希望列出具有相关统计数据的球员。你可以给每个玩家点数或其他统计数据。已经有效了。
"playerstat"中的条目(每个玩家只要填写点数等数据就会自动出现在这里)和"game"table中的条目具有相同的关系代码。玩家没有关系代码,因为游戏总是在变化,但玩家保持不变。
我的问题是,如果游戏完成并开始新游戏并且我向玩家输入数据,那么点数等将再次出现在第一个游戏统计数据中。所以第二场比赛的新数据被添加到第一场比赛的统计数据中。
如何将点数添加到相应的统计数据中,这些统计数据也具有游戏和统计数据的关系代码?
这是我的查询:
$stmt = $conn->prepare("SELECT
lt_player.name, lt_player.surname, lt_player.nickname,
lt_player.number, lt_player.id as playerid,
lt_playerstat.points, lt_playerstat.team_id,
lt_playerstat.rel_code
FROM
lt_player
LEFT JOIN lt_playerstat ON (lt_player.id = lt_playerstat.playerid)
我真正需要的是 "WHERE lt_playerstat.rel_code = 'lt_game.rel_code'" 以及所有可用的播放器。我该怎么做?
这是我的 table:
玩家数据
id
game_id
team_id
playerid
points
active
rel_code
玩家
id
team_id
name
surname
nickname
number
游戏
id
team_id
date
time
rel_code
第一场比赛数据 "denny doodle" 有 4 分
第二场比赛的统计数据 "denny doodle" 再次得到 4 分,因为那是第一场比赛的数据,而不是第二场比赛的数据,我猜是因为缺少与比赛的关系。
它显示所有条目,即使它不是当前游戏的 real_code。
假设您知道当前游戏的 rel_code 是什么:
SELECT
lt_player.name, lt_player.surname, lt_player.nickname,
lt_player.number, lt_player.id as playerid,
lt_playerstat.points, lt_playerstat.team_id,
lt_playerstat.rel_code
FROM
lt_player
INNER JOIN lt_game
LEFT JOIN lt_playerstat ON (lt_playerstat.playerid = lt_player.id)
where lt_game.rel_code = 'The Rel Code Of the Current Game'
如果您想对游戏中每个玩家的得分求和
SELECT
lt_player.name, lt_player.surname, lt_player.nickname,
lt_player.number, lt_player.id as playerid,
sum(lt_playerstat.points), lt_playerstat.team_id,
lt_playerstat.rel_code
FROM
lt_player
INNER JOIN lt_game
LEFT JOIN lt_playerstat ON (lt_playerstat.playerid = lt_player.id)
where lt_game.rel_code = 'The Rel Code Of the Current Game'
group by lt_player.id
如果你不知道当前游戏的rel_code,那你就不能玩了。
不确定你所说的 "all available players" 是什么意思,但这将为所有拥有 player_stat 行和正确 rel_code 的玩家提供 player_stat。
我有三个 table:"playerstat"、"player" 和 "game"。
"playerstat"table第一次是空的,"players"已经有玩家选择,table"game"也有一个可以分配统计数据和球员的条目。 现在我希望列出具有相关统计数据的球员。你可以给每个玩家点数或其他统计数据。已经有效了。
"playerstat"中的条目(每个玩家只要填写点数等数据就会自动出现在这里)和"game"table中的条目具有相同的关系代码。玩家没有关系代码,因为游戏总是在变化,但玩家保持不变。
我的问题是,如果游戏完成并开始新游戏并且我向玩家输入数据,那么点数等将再次出现在第一个游戏统计数据中。所以第二场比赛的新数据被添加到第一场比赛的统计数据中。
如何将点数添加到相应的统计数据中,这些统计数据也具有游戏和统计数据的关系代码?
这是我的查询:
$stmt = $conn->prepare("SELECT
lt_player.name, lt_player.surname, lt_player.nickname,
lt_player.number, lt_player.id as playerid,
lt_playerstat.points, lt_playerstat.team_id,
lt_playerstat.rel_code
FROM
lt_player
LEFT JOIN lt_playerstat ON (lt_player.id = lt_playerstat.playerid)
我真正需要的是 "WHERE lt_playerstat.rel_code = 'lt_game.rel_code'" 以及所有可用的播放器。我该怎么做?
这是我的 table:
玩家数据
id
game_id
team_id
playerid
points
active
rel_code
玩家
id
team_id
name
surname
nickname
number
游戏
id
team_id
date
time
rel_code
第一场比赛数据 "denny doodle" 有 4 分
第二场比赛的统计数据 "denny doodle" 再次得到 4 分,因为那是第一场比赛的数据,而不是第二场比赛的数据,我猜是因为缺少与比赛的关系。
假设您知道当前游戏的 rel_code 是什么:
SELECT
lt_player.name, lt_player.surname, lt_player.nickname,
lt_player.number, lt_player.id as playerid,
lt_playerstat.points, lt_playerstat.team_id,
lt_playerstat.rel_code
FROM
lt_player
INNER JOIN lt_game
LEFT JOIN lt_playerstat ON (lt_playerstat.playerid = lt_player.id)
where lt_game.rel_code = 'The Rel Code Of the Current Game'
如果您想对游戏中每个玩家的得分求和
SELECT
lt_player.name, lt_player.surname, lt_player.nickname,
lt_player.number, lt_player.id as playerid,
sum(lt_playerstat.points), lt_playerstat.team_id,
lt_playerstat.rel_code
FROM
lt_player
INNER JOIN lt_game
LEFT JOIN lt_playerstat ON (lt_playerstat.playerid = lt_player.id)
where lt_game.rel_code = 'The Rel Code Of the Current Game'
group by lt_player.id
如果你不知道当前游戏的rel_code,那你就不能玩了。
不确定你所说的 "all available players" 是什么意思,但这将为所有拥有 player_stat 行和正确 rel_code 的玩家提供 player_stat。