BOM전개시 start with, connect by 조건 문의 0 4 6,771

by 손님 [SQL Query] start with connect by [2009.12.30 16:30:22]


여러가지 검색도 해봤는데 잘 없는거 같아서 질문 드립니다.

상위코드, 하위코드, 조건 이런 데이터가 있는데요

select *
from (
select 'A' mom, 'B1' son, '50' condition
  from  dual
union all
select 'A' mom, 'B2' son, '' condition
  from  dual
union all
select 'A' mom, 'B3' son, '' condition
  from  dual
union all
select 'B1' mom, 'C1' son, '' condition
  from  dual
union all
select 'B1' mom, 'C2' son, '30' condition
  from  dual
union all
select 'B3' mom, 'C3' son, '' condition
  from  dual
union all
select 'C2' mom, 'D4' son, '' condition
  from  dual )

start with mom = 'A'
connect by mom = prior son

MOM SON CONDITION
A B1 50
A B2 
A B3 
B1 C1 
B1 C2 30
B3 C3 
C2 D4 

원하는건 CONDITION이 50인 것들만 하위로 풀리도록 하고 싶은데요

원하는 답

MOM SON CONDITION
A B1 50
B1 C1 
B1 C2 30
A B2 
A B3 

아무리 고민을 해봐도 답이 안나오네요 connect by 에 and condition = '50'으로 추가하면 2레벨부터 조건절

따지는거 같아서 그 밑으로 나와야 할게 안나오네요

혹시 같은 고민 하신적 있으신분은 답변 주시면 감사드리겠습니다.

 

by 빈이 [2009.12.30 16:48:01]
초보입니다.
조건절 설명이 좀 이상해요~
CONDITION이 50인 것들만 하위로 풀리도록 하고 싶은데요
이게 무슨말이죠.. 원하는답에 50인건 젤 위에가있는데...
제가 이해를 못하는건가요;

by 마농 [2009.12.30 17:12:16]
루트를 지정해주는 구문이 start with 구문입니다.
여기에 기술해 주시면 됩니다.
START WITH mon = 'A' AND condition = 50

by 마농 [2009.12.30 17:15:49]
루트를 지정하는 질문이 아니었군요...

CONNECT BY mom = PRIOR son
AND PRIOR condition = 50

by 질문자 [2009.12.30 17:53:04]
오옷 잘되는거 같습니다. prior 넣어줘야 되는군요

정말 감사합니다~~~

마농님 빈이님 다 감사드려요^^

새해복많이 받으세요 ㅎㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입