Oracle 쿼리 -> PostgreSql 변환질문 (CONNECT_BY_ISLEAF ㅠㅠ) 0 4 11,830

by 지우 [SQL Query] Oracle PostgreSql [2015.10.21 08:50:33]


Oracle 퀴리를 PostgreSQL 쿼리로 변환을 해야 하는데요..

제가 DB쪽은 잘 몰라서요.. 구글에서 검색하면서 하나씩 바꾸고 있는데

오라클의 CONNECT_BY_ISLEAF 는 어떻게 바꿔야 할지 잘 모르겠습니다. 

계층쿼리에서 최하위 Level인지의 여부를 0,1의 값으로 가지고 있다는거는 알겠는데

이걸 Postgresql로 어떻게 변환해야 하는지요?

아래는 변환해야 하는 오라클 쿼리 입니다. 

 

SELECT ASSET.*, CONNECT_BY_ISLEAF ISLEAF
                FROM ASMM_ASSET_MST ASSET
                START WITH ASSET.ASSET_PID IS NULL
                CONNECT BY PRIOR ASSET.ASSET_ID = ASSET.ASSET_PID   

 

아래는 위의 오라클 쿼리를 PostgreSQL로 변환했을때입니다. ( CONNECT_BY_ISLEAF 제외 )

              WITH RECURSIVE Q AS (
                  SELECT ASSET.*
                  FROM ASMM_ASSET_MST ASSET
                  WHERE ASSET.ASSET_PID IS NULL
                UNION ALL
                  SELECT ASSET.*
                  FROM ASMM_ASSET_MST ASSET
                JOIN Q ON Q.ASSET_ID = ASSET.ASSET_PID
                )
              SELECT * FROM Q  

 

오라클의 CONNECT_BY_ISLEAF를 포함해서 Postgresql로 변환하는방법 아시는 분은 

조금만 도와주세요....간절합니다. .  헬프미~ㅠㅠ

 

미리 감사합니다. !

by 창조의날개 [2015.10.21 09:38:19]

 

Postgresql로 테스트가 불가능 해서 원리(?)만 간략히 설명해 드릴께요..

참고해 보세요..

 

CONNECT_BY_ISLEAF의 원리는 간단합니다.

현재 데이터의 코드값을 상위코드로 가지고 있는 데이터가 하나도 없는 경우는 1이 되고 하나라도 있다면 0이 됩니다.

 

현재 데이터의 코드값을 상위코드로 가지고 있는 데이터가 있다는 것은 현재 레코드는 최하위 코드가 아니라는 것이겠죠..

 

 


by 지우 [2015.10.21 10:09:36]

답변감사합니다. 

무슨 말씀인지는 알겠습니다....

제가 웹페이지 개발만해서 DB쪽은 아주 조금만 아는데 

같은레벨의 테이블이면 쫌 보면 알겠는데.. 계층 쿼리에서 계층이라는거 자체가 감이 잘 안오네요.. 

테스트는 안되더라도 어떻게하면 되겠다...라는 생각이 있으시면 샘플로라도 작성해주시면 

참고해서 테스트 해보겠습니다. ㅜㅜ 

 

답변 감사합니다. 


by 창조의날개 [2015.10.21 11:32:07]

WITH RECURSIVE Q AS (
    SELECT ASSET.*
    FROM ASMM_ASSET_MST ASSET
    WHERE ASSET.ASSET_PID IS NULL
  UNION ALL
    SELECT ASSET.*
    FROM ASMM_ASSET_MST ASSET
  JOIN Q ON Q.ASSET_ID = ASSET.ASSET_PID
  )
SELECT AA.* 
     , CASE WHEN (SELECT COUNT(*) FROM ASMM_ASSET_MST WHERE ASSET_PID = AA.ASSET_ID) > 0 THEN 0
       ELSE 1 END AS ISLEAF
FROM Q AA
;

 

이렇게 한번 해 보세요..

 


by 지우 [2015.10.21 13:20:31]

어마이가쉬!!!!!!!!!!!

창조의 날개님 너므너므 감사합니다 .... ㅠㅠ 

당신은 사랑입니다 ~ ♥.♥  

 

 

 

 

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