Oracle -> PostgreSQL 형변환 관련 질문드립니다. (start with관련) 0 3 2,474

by 코린이굔빈 [SQL Query] PostgreSQL start with with recursive [2021.12.15 09:15:48]


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

 

위와 같은 쿼리를 PostGreSQL로 변환 중 입니다. 다만 테이블 2개를 합쳐서 with recursive로 변환 중 인데 테이블 join은 어느 쪽에서 이루어지나요? 그리고 start with 처럼 조건은 어디에서 걸어야 하는건가요?

 

웹 개발을 시작하는데 쿼리가 너무 힘든 것 같습니다.. 심지어 오라클만 조금 아는 정도인데 다른 dbms를 이용하려니 더욱 더 어렵습니다.. 도와주세요ㅠㅠ

by 마농 [2021.12.15 09:59:38]
-- PostgreSQL --
WITH RECURSIVE t AS
(
SELECT id
     , child_id
     , parent_id
     , 1 lv
  FROM table_m
 WHERE child_id = 3              -- Start With
 UNION ALL
SELECT p.id
     , p.child_id
     , p.parent_id 
     , c.lv + 1 lv
  FROM t c
 INNER JOIN table_m p
    ON c.parent_id = p.child_id  -- Connect By
)
SELECT m.child_id
     , m.parent_id
     , s.val_name
  FROM t m
 INNER JOIN table_s s
    ON m.id = s.id
 ORDER BY lv DESC
;

 


by 코린이굔빈 [2021.12.15 10:18:27]

마농님 정말 감사합니다 이런식으로 조인하는거군요..! 많이 도움 되었습니다 감사합니다

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