2016-06-02 2 views
1

나는 의미하는 바를 어떻게 표현할 지 모르겠습니다. 내가 시도해 볼게 : 거기에 참조 필드에 의해 계단식 모든 요소를 ​​선택하는 방법이 있습니까?Oracle-SQL 단일 선택, 필드로 계단식으로 배열

는 예를 들어, 내가 행이 있습니다

 
parentRef | Reference | Data 
------------------------------ 
aContainer | mainObj | "Parent" 
mainObj  | secondObj | "Child 1" 
secondObj | thirdObj | "Child 2" 
nonExistent | blankObj | "Don't select me!" 

을 그리고 나는 단 하나의 parentRef 알고있을 때 하나의 문에 mainObj, secondObj, thirdObj을 선택합니다 : "aContainer 가포을". 이것이 가능한가?

select...where parentRef = 'aContainer', select...where parentRef = 'mainObj' 등의 코드를 여러 번 수행하면이 작업을 수행 할 수 있지만 주로 많은 쿼리를 사용하여 내 DB를 해머하고 싶지 않습니다.

편집 : 트리 쿼리! 그것이 내가 필요로 한 검색어입니다.

답변

2

오라클은 나무 쿼리를 할 수있는, 나는 바로 당신을 이해한다면, 당신은 상관 쿼리 같은 것을 원하는

+0

그게 정확히 필요한 것입니다! 'parentRef = 'aContainer'로 시작하기 전에 Reference로 연결 = parentRef' –

0

BY, START WITH와 CONNECT를 보라. 이렇게하면 테이블에 상위 참조가있는 항목 만 가져올 수 있습니다. 예를 들면 다음과 같이 보일 수 있습니다 (로직을 뒤집었을 수도 있음).

select 
parentRef 
, Reference 
, Data 
from mytable parentTable 
where Reference in (
select 
reference 
from mytable childTable 
where childTable.reference = parenttable.parentref) 
+0

실제로 Reference = 'nonExistent'항목을 추가하기 전까지 작동합니다. 이 예제에서는 그 이름이 의미가 없지만 다른 이름 일 수 있습니다. START WITH와 CONNECT BY는 내가 필요로하는 것이 었습니다. –