比较行结果并创建新列

时间:2015-02-07 19:04:49

标签: php mysql

我想比较行结果,并在特定列具有相同的fightID时创建新列。

我的查询:

SELECT fight.fightdato, fight.fightID, players.name, 
       playersfight.playerid, playersfight.playerScore 
FROM fight 
INNER JOIN playersfight ON fight.fightID = playersfight.fightID 
INNER JOIN players ON playersfight.playerID = players.playersID

导致php:

Fight   Fight Date  Player  PlayerScore
1       2014-10-10  Kevin   8
1       2014-10-10  Chris   4
2       2014-09-01  Kevin   8
2       2014-09-01  Eric    4

我想要的结果:

Fight   Fight Date Player1 Result1 Player2 Result2
1       2014-10-10 Kevin   8       Chris   4
2       2014-09-01 Kevin   8       Eric    4

btw - 我是php / mysql和一般编程的新手

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要再次加入playerplayerfight表格。

类似的东西:

SELECT fight.fightID, fight.fightdato,
       p1.name as 'Player_1', pf1.playerid as 'PlayerID_1', pf1.playerScore as 'Result_1',
       p2.name as 'Player_2', pf2.playerid as 'PlayerID_2', pf2.playerScore as 'Result_2'          
FROM fight 
JOIN playersfight pf1 ON fight.fightID = pf1.fightID 
JOIN players p1       ON pf1.playerID  = p1.playersID
JOIN playersfight pf2 ON fight.fightID = pf2.fightID 
JOIN players p2       ON pf2.playerID  = p2.playersID
WHERE p1.playersID < p2.players2

带有WHERE条件的p1.playersID < p2.players2子句排除了我们不希望返回的两种情况:

  1. 结果连续两次加入同一个玩家。
  2. 重复 - 例如,对于ID为12的玩家,会有两次玩家ID (1,2)(2,1)同一回合。现在它只返回第一个排列。
相关问题