2011-04-14 5 views
0

세 다음과 같이 테이블 유무 :이 예를 들어Select 문

PersonTable 
Person.ID 
Person.Name 

PersonTypeCompositeTable 
Person.ID 
PersonType.ID 

PersonTypeTable 
PersonType.ID 
PersonType.Category 

을 PersonTypeCompositeTable의 값은 말한다 :

1,A 
2,A 
3,B 

가 어떻게 SELECT 문을 작성하는 PersonType이 "A"인 모든 사람들을 반환 할 것인가?


업데이트 : 당신은 세 개의 테이블 사이 joins를 사용

SELECT p.* 
FROM PersonTable p 
    INNER JOIN PersonTypeCompositeTable ptc 
    ON p.ID = ptc.ID 
    INNER JOIN PersonTypeTable pt 
    ON ptc.ID = pt.ID 
WHERE pt.Category = 'A' 
+1

나는 그것이 복합 재료 테이블이라고 생각하지 않습니다. 그냥 조인 테이블입니다. –

+0

+1 @Joe Philllips : 네가 맞았다. 고마워! http://en.wikipedia.org/wiki/Junction_table – blunders

답변

3

(답의 작업 버전이 게시).

SELECT p.* 
FROM PersonTable p 
    INNER JOIN PersonTypeCompositeTable ptc 
    ON p.Person.ID = ptc.Person.ID 
    INNER JOIN PersonTypeTable pt 
    ON ptc.PersonType.ID = pt.PersonType.ID 
WHERE pt.PersonType.Category = 'A' 
+1

RTFM 덧글에 대한 +1 – Wes

+0

+1 @Wes : RTFM yourself ... :-) ... 농담이지만, 정말로, 나는 JOINS에 대해 오래 전부터 알고 있습니다. 여전히 그들을 얻지는 못합니다. Oded는 매우 쉬운 rep 지점을 얻습니다. 게다가, 그는 그의 대답을 업데이 트 결국. – blunders

+0

+1 @Oded : 나가서 사무실로 들어가서 대답으로 선택하거나 코멘트를 올리면 아침에 가장 먼저이 질문에 답할 것입니다. 감사! – blunders