我有三个表:“ playerstat”,“ player”和“ game”。

“玩家状态”表第一次为空,“玩家”已经选择了一个玩家,而“游戏”表也有一个条目,可以在其中分配统计信息和玩家。

现在我希望列出具有相关统计数据的球员。您可以给每个玩家点数或其他统计数据。已经有效了。

“玩家状态”中的条目(每个玩家只要点入数据就自动进入此处)和“游戏”表中的条目具有相同的关联代码。玩家没有关联代码,因为游戏总是在变化,但玩家保持不变。

我的问题是,如果游戏结束并且开始了新游戏,并且我向玩家输入了数据,则积分等再次出现在第一个gamestats中。因此,第二场比赛的新数据会添加到第一场比赛的统计数据中。

我如何将积分添加到也具有游戏和统计数据关系代码的各个统计数据中?

这是我的查询:

$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'”,同时所有可用的玩家。我怎样才能做到这一点?

这是我的桌子:

玩家统计
  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分


第二场比赛的数据“丹尼·杜布”再次获得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,那么您就无法做到这一点。

不确定“所有可用玩家”是什么意思,但这将为您提供所有具有player_stat行和正确rel_code的玩家的player_stat。

关于php - MySQL-左联接-如何获得我需要的值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28776249/

10-12 15:18