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로 변환하는방법 아시는 분은
조금만 도와주세요....간절합니다. . 헬프미~ㅠㅠ
미리 감사합니다. !
답변감사합니다.
무슨 말씀인지는 알겠습니다....
제가 웹페이지 개발만해서 DB쪽은 아주 조금만 아는데
같은레벨의 테이블이면 쫌 보면 알겠는데.. 계층 쿼리에서 계층이라는거 자체가 감이 잘 안오네요..
테스트는 안되더라도 어떻게하면 되겠다...라는 생각이 있으시면 샘플로라도 작성해주시면
참고해서 테스트 해보겠습니다. ㅜㅜ
답변 감사합니다.
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 ;
이렇게 한번 해 보세요..
어마이가쉬!!!!!!!!!!!
창조의 날개님 너므너므 감사합니다 .... ㅠㅠ
당신은 사랑입니다 ~ ♥.♥