2010-05-09 2 views
29

나는 조금 붙어있는 시나리오가 있습니다. 색상에 대한 설문 조사가 있고 색상 데이터 용 테이블 하나와 사람들의 답변 용 테이블이 있다고 가정 해 보겠습니다.동일한 테이블의 여러 열에 대한 내부 조인 수행

tbColors 표시를위한

color_code , color_name 
    1  , 'blue' 
    2  , 'green' 
    3  , 'yellow' 
    4  , 'red' 

tbAnswers

answer_id , favorite_color , least_favorite_color , color_im_allergic_to 
    1  ,   1   ,   2       3 
    2  ,   3   ,   1       4 
    3  ,   1   ,   1       2 
    4  ,   2   ,   3       4 

나는 대답 테이블을 제시하지만 tbColors에서 COLOR_NAME 열을 사용하여 SELECT를 쓰고 싶어요.

FROM 섹션에서 tbColors의 이름을 세 번 바꾸고 각 열에 다른 별칭을 사용하여 "가장 바보 같은"방법을 이해합니다.

어리석은 방법은 어떨까요?

+0

관련 http://stackoverflow.com/questions/4267929/whats-the-best-way-to-join-on-the-same-table-twice?rq=1 – nawfal

답변

58

이 길을 가야하는 것처럼 보인다 :

SELECT 
    A.answer_id 
    ,C1.color_name AS favorite_color_name 
    ,C2.color_name AS least_favorite_color_name 
    ,C3.color_name AS color_im_allergic_to_name 
FROM tbAnswers AS A 
INNER JOIN tbColors AS C1 
    ON A.favorite_color = C1.color_code 
INNER JOIN tbColors AS C2 
    ON A.least_favorite_color = C2.color_code 
INNER JOIN tbColors AS C3 
    ON A.color_im_allergic_to = C3.color_code 

보다는 "바보"

, 나는이 꽤 표준 쿼리 것을 감행 것입니다. 또한 모든 열에 유효한 값이 있다고 가정합니다. 그렇지 않은 경우 모든 내부 조인을 LEFT JOIN으로 바꿉니다

+5

감사합니다.이 시나리오는 어떤 이유로 Google에 힘들었습니다. –

관련 문제