2012-04-30 2 views
1

3 개의 Oracle 테이블이 있습니다. A는 B 조인 및 B는 내가 해당 기록이 B 또는 C에 존재하는지의 irerspective에서 모든 레코드 나는이 같은 쿼리를 작성하려는 C.에 조인오라클 외부 조인 쿼리

select a.name from a,b,c where a.a_id = b.b_id(+) and b.b_id = c.c_id(+) 

이 쿼리 나에게 잘하지 않는 것을 특히 두 번째 참여와 함께 A에 기록이 있지만 B와 C에 아무것도없는 경우 정확히 무엇이 발생합니까? 여전히 레코드를 가져올 수 있습니까?

위의 쿼리는 동일한 레코드 수를 select a.name from a 과 같이 반환하므로 쿼리가 올바르다 고 추측하고 있습니까? 또한 쿼리를 다시 작성하는 더 좋은 방법이 있습니까?

+0

다음은 행이 일치하는 ID를 가진 모든 행이 있는지 여부에 관계없이 반환됩니다 예상대로 더 나은 쿼리

Select a.name from A a left join B b on a.a_id=b.b_id inner join C c on b.b_id=c.c_id 

이것은 결과를 제공해야 할 수 있습니다 추정 b 또는 c. 이제 id 1의 경우 행, c 행 및 b 행이 없으면 어떻게됩니까? b.b_id가 null입니다. 그래서 ... 시도해보십시오. – joshp

+0

감사합니다. a의 id 1에 b 행이 없으면 c 행은 어떻게 될까요? c는 a와 직접적인 관계가 없습니까? 조금만 설명해 주시겠습니까? – Victor

+0

알겠습니다. b 행이 없으므로 b 행이 있으면 검색하지 않습니다. 이런 종류의 조인을 작성할 때 고려하십시오. – joshp

답변