2

我正在做一个项目,我需要根据给定行的内容对两列之一进行表连接。基本上,给定一个特定的用户名,我想获得他们正在玩的所有游戏中所有对手的信息。我在这里使用的两个表是 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'

我相当有信心我的逻辑是正确的,但我非常有时间找到有关适用于我的情况的语法的任何信息。如果有人能帮我一把,我会非常感激,我已经为此苦苦思索了好几个小时。提前致谢 :)

4

1 回答 1

2

您将需要复制整个表达式:

FROM GameSession
        INNER JOIN Users
        ON Users.Username=
            CASE WHEN GameSession.Player1 = 'BOB' THEN GameSession.Player2
            ELSE GameSession.Player1
            END
于 2012-04-17T19:56:08.140 回答