2012-06-02 2 views
0

내 문제는 여기에 있습니다. 나는 세 개의 테이블이 있습니다관계형 데이터베이스 필드 당기기

사람의 표

person_id, name

이벤트 표

event_id, event_name, event_date

일치 표 그래서

match_id, person_a, person_b, winner, event

를 내가 n 일 치 테이블 인 person_a, person_b 및 winner는 Person 테이블의 person_id에 해당하는 정수입니다. 내가 일치 테이블에서 행을 끌어 경우

,이 같이 나올 것이다 :

1, 1, 2, 1, Chess Tournament #33

을 나는 Person 테이블에있는 사람 3 개 필드 (person_a, person_b, 그리고 승자) 조회 수있는 방법 결과가 나오도록 실제 이름을 가져 가야합니까?

1, John, Steven, John, Chess Tournament #33

나는 두 개의 테이블을 조인으로 보였지만, 난 그냥 ID = ID 또는 WHERE ID = ID를 할 수 있기 때문에 의미가 없습니다. 어떤 도움을 주셔서 감사합니다. 데이터베이스 스키마의

+0

외부 키는 내가 person_a, person_b, 그리고 승자 필드 person_id로 외국 키가 할 수 – Brendan

+0

도움이 될 것입니다,하지만 그들은 여전히, 1, 2, 3으로 등의 당기거야 ... – zen

+0

오, 내 잘못입니다. 나는 그 부분을 놓쳤다. 전화로 SO를 읽으면 조금 혼란 스러울 수 있습니다. – Brendan

답변

4
SELECT 
    Matches.match_id AS match_id, 
    PersA.name AS persa_name, 
    PersB.name AS persb_name, 
    IF(winner=person_a,PersA.name,PersB.name) AS winner_name, 
    Events.event_name AS event_name 
FROM 
    Matches 
    INNER JOIN Person AS PersA ON Matches.person_a=PersA.person_id 
    INNER JOIN Person AS PersB ON Matches.person_b=PersB.person_id 
    INNER JOIN Events ON Matches.event=Events.event_id 
WHERE 
    -- whatever 
+0

멋진 콩, 완벽하게 작동합니다. 그래도 많은 일이 그래 보인다. 롤. 필드는 관계형이므로 간단한 방법이 있다고 생각할 수 있습니다. – zen

관련 문제