特定の行の内容に応じて、2つの列のいずれかでテーブル結合を実行する必要があるプロジェクトに取り組んでいます。基本的に、特定のユーザー名を指定して、プレイしているすべてのゲームのすべての対戦相手に関する情報を取得したいと思います。ここで使用している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'
私は自分の論理が正しいとかなり確信していますが、自分の状況に適用できる構文に関する情報を見つけるのに非常に時間がかかっています。誰かが私に手を差し伸べてくれたら本当にありがたいです、私は何時間もこれに頭を悩ませてきました。前もって感謝します :)