2012-05-25 4 views
2

최근에 MySQL 데이터베이스에서 원하는 쿼리 결과를 얻는데 어려움을 겪었습니다. 문제가 데이터베이스와 관련이 있는지 확실하지 않습니다 또는 실제 쿼리.동일한 기본 키에 여러 외부 키가 연결되어있는 테이블

기본적으로는이 테이블 축구 선수 데이터베이스 :

(player): player_id (primary), playerName 
(match): match_id (primary), playerID1, playerID2, playerID3, etc.. 

가 나는 경기 데이터베이스의 속성을 반환하고 있도록 데이터베이스를 조회 할, 그러나 선수의 이름이 아닌 반환 그들의 신분증.

한 명의 플레이어 만 사용할 수 있지만 다른 플레이어는 사용할 수 없습니다.

SELECT p.Name 
FROM `match` m 
inner join `player` p on p.player_id=m.playerID1 

을하지만 두 번째 플레이어를 추가 할 때, p.Name는 아직 작동하지 않습니다 playerID1에 매핑 다음은 코드입니다.

나는 잘 설계되지 않은 데이터베이스를 의심하지만 어떤 권장 사항도 환영합니다!

답변

5

데이터베이스 디자인으로 인해 골치가 아플 수 있습니다. MatchPlayer 사이의 관계를 MatchIDPlayerID이 모두 포함 된 MatchPlayer 테이블을 추가하여 가능한 한 많은 플레이어가 Match에 연결할 수 있도록 허용해야합니다. 각 필드에 필드가 없어도됩니다.

하지만 당신의 쿼리

, 당신은 다음과 같이해야 할 것이다 :

SELECT p.Name 
FROM `match` m 
INNER JOIN `player` p 
    ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3) //etc 

데모 SQLFiddle을 HERE p.Name이 어떤 선수를 식별하는 방법

+0

? 이 경우 player1,2,3과 같은 모든 플레이어를 참여시켜야합니까? – sumit

+0

일치하는 필드를 식별하지는 않지만 질문에 해당하지 않습니다. – mattytommo

+0

IMO p.player는 1 번째 col 즉 player1을 매핑합니다. – sumit

관련 문제