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
운영게시판
최근게시물
DB2 Q&A 700 게시물 읽기
No. 700
오라클에서 사용되는 문법이 DB2에서는 어떻게 사용되는지좀 알려주십시요..
작성자
한결
작성일
2004-10-21 17:42ⓒ
2004-10-21 17:46ⓜ
조회수
10,643

오라클에서 사용되는 문법이 DB2에서는 어떻게 사용되는지좀 알려주십시요..

 

ex)오라클 예제

SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job
FROM emp
START WITH job='PRESIDENT'
CONNECT BY PRIOR empno=mgr;

ENAME                      EMPNO       MGR          JOB
-------------------- ---------- ---------- ---------
KING                          7839                           PRESIDENT
    JONES                   7566           7839          MANAGER
        SCOTT               7788           7566          ANALYST
             ADAMS          7876           7788          CLERK
        FORD                  7902           7566         ANALYST
             SMITH            7369           7902         CLERK
    BLAKE                    7698           7839         MANAGER
        ALLEN                7499           7698         SALESMAN
        WARD                 7521           7698         SALESMAN
    CLARK                    7782           7839         MANAGER
        MILLER                7934          7782         CLERK

 

위에서처럼 LPAD, START WITH, CONNECT BY PRIOR 가 DB2에서는 안먹힙니다.

위와같이 대분류, 중분류, 소분류 리스트를 보여야되는데, 적절한 예제를 부탁드립니다.

수고하세요..

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

DB2 를 시작한지 얼마안되어 많은 도움이 못되어 드리지만

IBM에서는 hirerarchy query를 위해 직접적으로 제공하는것이

없으며 recursive query 라는 기법으로 구현해야 하는것 같습니다.

정확히 이해하지 못하여 그냥 자료를 갖다 붙이지만..

아래의 링크와 글들이 도움이 되길 바라며 붙입니다.

 

참고: IBM 사용자 Q/A에서 발췌 ---------------------------

▤김영복 님에 대한 답글입니다.

물론 DB2에도 비슷한 SQL이 있습니다.
주로 BOM (공장자동화 등의 application 개발) 에서 사용되는 것이라
다소 생소하신 분들도 있을 것이라 생각됩니다.

DB2에서는
이런 계층구조형태를 가지는 구조에 대한 SQL을
"Recursive SQL" 이라고 일컫습니다. (자세한 내용은 DB2 UDB SQL CookBook 참고)

질문자께서 원하시는 대로
결과가 나오는 걸 확인하려면
t_work에 대한 layout이 있었으면 좋지 않았나 하고 생각합니다.

정확한 Query를 작성해서 TEST를 통해
확실한 Result Set을 보여드릴 수 없어 안타깝습니다.

하지만,

"Recursive SQL"에 통해 질문자께서 요청하신 대로
Query를 작성해보면 다음과 같지 않을까 싶습니다.

=========================================================================
WITH test (order_key, col1, col2, col3,...,) AS
(SELECT order_key, col1,col2,col3,...
FROM hierarchy_test
WHERE order_key = substr(order_key,1,length(order_key)-3) = order_key
UNION ALL
SELECT T1.order_key, T1.col1, T1.col2, T1.col3,...
FROM hierarchy_test T1, test T2
WHERE T2.col1 = T1.order_key
)
SELECT *
FROM test WHERE isdelete = n ;

--------------------------------------------------------------------------

보다 자세한 내용을 알려드리지 못해서 죄송스럽습니다.

자세한 내용은
위에서도 말씀드렸듯이
DB2 UDB SQL COOKBOOK을 참조하시기 바랍니다.





▤김영복 님의 글입니다.
아래와 같은 오라클 쿼리를 DB2쿼리로 바꿀려고 합니다...

CONNECT BY PRIOR 부분을 어떻게 바꿔야 할지 알려주세요....
자료를 찾아봐도 없습니다.


select * from t_work
CONNECT BY PRIOR substr(order_key,1,length(order_key)-3) = order_key
start with type = H and ISDELETE= N

--------------------------------------------------------------

다른 참고 링크 :

http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0000879.htm

simon님이 2004-10-25 19:20에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
705[질문] DB2 Type 2 Index 알려주세요. [1]
궁금함
2004-11-05
5968
703테이블스페이스파일 경로의 의미? [1]
조봉조
2004-11-04
6944
702create table 오류 [3]
조봉조
2004-11-03
6699
700오라클에서 사용되는 문법이 DB2에서는 어떻게 사용되는지좀 알려주십시요.. [1]
한결
2004-10-21
10643
699DB2 패스워드 필드 암호화[문의] [1]
김지연
2004-10-21
9591
698DB2 도움말 관련 사이트 어떻게 되죠? [1]
백동열
2004-10-18
6605
696기존에 생성된 DB를 확인하고 싶습니다. [1]
초보
2004-10-15
5772
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다