database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10263 게시물 읽기
No. 10263
oracle > postgresql with recursive 봐주세요
작성자
꼬끼리
작성일
2021-07-05 15:10
조회수
1,960

oracle


SELECT x.cd_seq         AS cdSeq      

             , x.p_cd_seq       AS pCdSeq     

             , x.cd_name        AS cdName     

             , x.cd_value       AS cdValue    

             , x.description    AS description

             , x.sort_no        AS sortNo     

             , x.type_img_url   AS typeImgUrl 

             , (SELECT COUNT (*) FROM to_metadata m, to_datatype h where m.datatype_seq = h.datatype_seq and h.type_category = x.cd_name) cnt

        FROM (

          SELECT cd_seq, p_cd_seq, cd_name, cd_value, description, sort_no, level lv, use_yn, type_img_url

          FROM to_datatype_category

          WHERE 1 = 1

          AND cd_value IN('PART', 'PTHE', 'PBOK', 'PDAT', 'PPAT', 'PRPT', 'PMLT', 'PETC', 'PPRE')

          CONNECT BY PRIOR cd_seq = p_cd_seq

          START WITH cd_seq = 0

          ORDER SIBLINGS BY sort_no

        ) x

        WHERE x.lv = 2


postgresql 

SELECT x.cd_seq         AS cdSeq      

             , x.p_cd_seq       AS pCdSeq     

             , x.cd_name        AS cdName     

             , x.cd_value       AS cdValue    

             , x.description    AS description

             , x.sort_no        AS sortNo     

             , x.type_img_url   AS typeImgUrl 

             , (SELECT COUNT (*) FROM to_metadata m, to_datatype h where m.datatype_seq = h.datatype_seq and h.type_category = x.cd_name) cnt

        FROM (

          WITH RECURSIVE a AS (

            SELECT cd_seq, p_cd_seq, cd_name, cd_value, description, sort_no, 1 lv, use_yn, type_img_url

            FROM to_datatype_category

            WHERE 1 = 1

            AND cd_seq = 0

            AND cd_value IN('PART', 'PTHE', 'PBOK', 'PDAT', 'PPAT', 'PRPT', 'PMLT', 'PETC', 'PPRE')

            UNION ALL

            SELECT d.cd_seq, d.p_cd_seq, d.cd_name, d.cd_value, d.description, d.sort_no, a.lv+ 1, d.use_yn, d.type_img_url

            FROM to_datatype_category d

            JOIN a ON a.cd_seq = d.p_cd_seq )

            SELECT * FROM a order by sort_no, cd_seq

        ) x

        WHERE x.lv = 2



이런식으로 변경하였는데 값이 다르게 나오는데

어디서 잘못됬는지 찾기가 어렵습니다.


한번 봐주실수 있으신가요

이 글에 대한 댓글이 총 1건 있습니다.

오라클

SELECT cd_seq, p_cd_seq, cd_name, cd_value, description, sort_no, level lv, use_yn, type_img_url

 

          FROM to_datatype_category

 

          WHERE 1 = 1

 

          AND cd_value IN('PART', 'PTHE', 'PBOK', 'PDAT', 'PPAT', 'PRPT', 'PMLT', 'PETC', 'PPRE')

 

          CONNECT BY PRIOR cd_seq = p_cd_seq

 

          START WITH cd_seq = 0

 

          ORDER SIBLINGS BY sort_no


pg

 

 

WITH RECURSIVE a AS (

 

            SELECT cd_seq, p_cd_seq, cd_name, cd_value, description, sort_no, 1 lv, use_yn, type_img_url

 

            FROM to_datatype_category

 

            WHERE 1 = 1

 

            AND cd_seq = 0

 

            AND cd_value IN('PART', 'PTHE', 'PBOK', 'PDAT', 'PPAT', 'PRPT', 'PMLT', 'PETC', 'PPRE')

 

            UNION ALL

 

            SELECT d.cd_seq, d.p_cd_seq, d.cd_name, d.cd_value, d.description, d.sort_no, a.lv+ 1, d.use_yn, d.type_img_url

 

            FROM to_datatype_category d

 

            JOIN a ON a.cd_seq = d.p_cd_seq )

 

            SELECT * FROM a order by sort_no, cd_seq


이 두 쿼리 결과가 같은지 부터 확인하면 될 것 같습니다. 

통상 "ORDER SIBLINGS BY" 결과가 order by sort_no, cd_seq 와 그 자료 순서가 다를 수 있을 수도 있습니다. 

이 경우는 재귀호출 CTE에서 오라클의 order by 와 같은 형태로 만들어줄 임의의 칼럼을 더 만들어서 구현해야할 수도 있습니다. 


 

김상기(ioseph)님이 2021-07-05 17:29에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10266데이타 롤링(?)...데이타 순환(?) 해당 표현이 맞는지 모르겠지만, 고수님들의 도움이 필요합니다. [4]
알고싶어쇼
2021-07-13
1889
10265oracle > postgresql with recursive 재 질문드립니다.. [1]
꼬끼리
2021-07-13
1770
10264too many clients already 메시지가 발생하면서 서버가 다운되었습니다. [7]
정상규
2021-07-12
1986
10263oracle > postgresql with recursive 봐주세요 [1]
꼬끼리
2021-07-05
1960
10262rowtocol 함수 변환 [1]
대머리
2021-07-02
1875
10261날짜 기간 계산 [2]
2021-06-30
2054
10260drop 복구 [1]
Jaemyoung Seo
2021-06-29
2001
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다