계층형쿼리 join 관련 질문드립니다.. 1 5 983

by 코린이굔빈 [SQL Query] 계층형쿼리 join [2021.12.14 15:26:51]


1.PNG (3,315Bytes)

select 
     m.parent_id,
     m.child_id,
     s.val_name
from table_s s, table_m m
where m.id = s.id
start with m.child_id is null connect by prior m.parent_id= m.child_id; 

이런식으로 두개의 테이블을 조합하여 계층형 쿼리를 작성 중 입니다. 데이터는 첨부파일에 첨부했습니다 저상태에서 m.parent_id = 3으로 했을때 첨부한 이미지처럼 3개가 다 나오게 쿼리를 짜고싶은데 너무 어렵습니다.. 조언 부탁드립니다..

 

 

by 마농 [2021.12.14 15:47:31]

첨부 이미지 컬럼명 거꾸로 바뀐 듯 하네요?
Connect by 절의 조건 컬럼명도 이상하네요.
Where 절에 있는 id 는 child_id 와는 다른 컬럼인가요? 같은 컬럼 일 듯 하네요.
이미지를 보면 3번 id 로부터 상위 id 를 모두 가져오려는 듯 하네요. 맞나요?
컬럼명은 ID, parent_id 두개 컬럼이라고 가정하고 답글 답니다.(child_id 라는 컬럼 없음)
 

SELECT m.id
     , m.parent_id
     , s.val_name
  FROM table_s s
     , table_m m
 WHERE m.id = s.id
 START WITH m.id = 3
 CONNECT BY PRIOR m.parent_id = m.id
 ORDER BY LEVEL DESC
;

 


by 코린이굔빈 [2021.12.14 15:59:33]

 

 

 

 

select 
     m.parent_id,
     m.child_id,
     s.val_name
from table_s s, table_m m
where m.id = s.id
start with m.child_id is null connect by prior m.parent_id= m.child_id; 

이거인데 잘못 올렸네요.. ㅠㅠ where 절에 있는 조건은 두 테이블 합치는 조건입니다.  parent_id = 3일때 2 1 null 저렇게 3개가 보이고 싶습니다.. 


by 마농 [2021.12.14 16:18:58]

컬럼명이 뭔가 이상하네요? 서로 뒤바뀐게 아닌가요?
컬럼명과 컬럼의 의미가 서로 반대네요?
이러면 쿼리 작성할때마다 헷갈리겠는데요?
 

SELECT m.parent_id
     , m.child_id
     , s.val_name
  FROM table_s s
     , table_m m
 WHERE m.id = s.id
 START WITH m.parent_id = 3
 CONNECT BY PRIOR m.child_id = m.parent_id
 ORDER BY LEVEL DESC
;

 


by 코린이굔빈 [2021.12.14 16:21:42]

아직 쿼리에 대해서 미숙한점이 많아서 잘 몰랐습니다.. 해당 방법으로 진행하니 원하는 결과값만 출력이 되네요 정말 감사합니다!

 


by 마농 [2021.12.14 16:25:06]

컬럼명이 정확해도 어려운게 계층쿼리인데.
컬럼명이 거꾸로이면 더욱더 헷갈리게 되겠네요.
애초에 테이블 설계가 잘못된것 같습니다.

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