2013-08-06 1 views
6

나는 서로 외래 키가있는 3 개의 테이블을 가지고 있습니다. SQL Server 저장 프로 시저를 작성하여 그 중 하나에서 레코드를 선택하려고합니다.외래 키가있는 3 개의 테이블에서 쿼리를 선택하십시오.

My tables

이제 내가 어떻게 진행할 수의 내가 모든 수상작 레코드가 ID = 2 게임을 참조하여 플레이어의 기록을 참조한다고 가정하자?

감사합니다.

+2

이 시도

; http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html –

답변

6

당신이 모든 수상 기록이 난 왼쪽을 사용 갖도록는 플레이어와 게임을 결합 지정했습니다. 그러나 Overall 코드는 where 조건에 따라 작동합니다. 당신은 내부가 WHERE 절 필터링에 가입 적용됩니다

select w.* from Winner w 
left Join Player p on p.ID_player = w.player_FK 
left join Game g on g.ID_game = p.Game_FK 
where Game.ID_game = 2 
+0

나는 그저 노력했는데 모두 좋았어. 고마워! –

+0

귀하의 의견에 진심으로 감사드립니다. – Selva

+0

@Selva는 모든 게임에 대한 최신 우승자 기록을 모두 선택하여 Group By와 동일한 작업을 수행하는 방법을 알려주십시오. – Avi

2

SELECTINNER JOIN을 사용해야하며 GameID 2에서 필터링하려면 WHERE 절을 사용할 수 있습니다.

SELECT ID_Winner, Name, Lastname, Player_FK 
FROM Winner 
INNER JOIN Player on Player.ID_Pplayer = Winner.Player_FK 
INNER JOIN Game ON Game.ID_game = Player.Game_FK 
WHERE Game.ID_game = 2 
+0

내가 할 때 내 메서드에서 (승자 레코드 클래스를 반환합니다 그 저장 프로 시저를 호출) 얻을 : System.IndexOutOfRangeException : ID_player –

+0

@SlimaneAgouram - 이것은 다른 질문입니다. 여기에서 답을 수락해야합니다 (원래 문제로 도움이 된 경우). 문제의 세부 정보와 함께 예외를 유발하는 코드 스 니펫이 포함 된 새로운 질문을 게시하십시오. –

+1

당신의 대답은 저의 문제에 도움이되었습니다. 남은 것은 제가 제대로 작동 할 수 있도록 모든 것을 갖추고 있는지 확인하는 것뿐입니다. 감사합니다. –