2012-04-17 2 views
2

주어진 행의 내용에 따라 두 개의 열 중 하나와 테이블 조인을해야하는 프로젝트에서 작업하고 있습니다. 기본적으로, 특정 사용자 이름이 주어지면, 나는 그들이하는 모든 게임에서 상대방에 관한 모든 정보를 얻고 싶습니다. 여기서 사용하는 두 테이블은 GameSession과 Users입니다. GameSession에는 각 플레이어 (Player1 및 Player2)에 대한 열이 있습니다.이 열은 사용자 열 테이블에있는 외래 키이며 순위 열을 포함합니다. 다음은 내가 선택한 통계입니다.CASE의 결과를 내부 조인의 기준으로 사용하려고하면 무엇을 잘못하고 있습니까?

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를 폐기 용 값으로 사용하고 있습니다.

#1054 - Unknown column 'Opponent' in 'on clause' 

나는 내 논리 권리가 꽤 확신하지만 난 데 :

나는 내 테스트를하고있어 어디 phpMyAdmin을 통해 얻고 SQL 오류는 다음과 같다 내 상황에 맞는 구문에 대한 정보를 찾는 데 시간이 많이 걸렸습니다. 누구든지 저에게 정말 감사 할 손을 줄 수 있다면, 몇 시간 동안 내 머리를 긁적 거리고 있습니다. 당신은 전체 표현식을 복사해야합니다 사전 :

답변

2

에 감사 : 내가 볼

FROM GameSession 
     INNER JOIN Users 
     ON Users.Username= 
      CASE WHEN GameSession.Player1 = 'BOB' THEN GameSession.Player2 
      ELSE GameSession.Player1 
      END 
+0

, 대단히 감사합니다. 더 우아하게 할 수는 없지만,이 솔루션은 효과가 있습니다. 내가 허락하자마자 당신의 대답을 받아 들일 것입니다. –

관련 문제