我正在开发一个项目,我需要根据给定行的内容对两列中的一列进行表连接。基本上,给定一个特定的用户名,我想获得他们正在玩的所有游戏中所有对手的信息。我在这里使用的两个表是GameSession和Users。 GameSession为每个玩家(Player1和Player2)都有一列,它们是Users表列Username中的外键,其中还包含Rank列。这是我的选择陈述:
SELECT CASE WHEN GameSession.Player1 = 'BOB' THEN GameSession.Player2
ELSE GameSession.Player1
END AS Opponent, Users.Rank
FROM GameSession
INNER JOIN Users
ON Users.Username=Opponent
WHERE GameSession.Player1 = 'BOB' OR GameSession.Player2 = 'BOB'
我在这里使用BOB作为一次性值。
我通过phpMyAdmin获取的SQL错误,我正在进行测试的地方如下:
#1054 - Unknown column 'Opponent' in 'on clause'
我非常有信心我的逻辑正确,但我很有时间找到有关适用于我的情况的语法的任何信息。如果有人能帮我一把,我真的很感激,我一直在摸着头几个小时。在此先感谢:)
答案 0 :(得分:2)
您需要复制整个表达式:
FROM GameSession
INNER JOIN Users
ON Users.Username=
CASE WHEN GameSession.Player1 = 'BOB' THEN GameSession.Player2
ELSE GameSession.Player1
END