메뉴 건너뛰기

조회 수 8752 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
[참고] 관련 포스트                                                                                                                                                         


계층형 쿼리를 이용한 샘플예제입니다. 실제 프로젝트에서 사용하기위한 쿼리로 적합하지 않습니다.


1
2
3
4
5
6
7
CREATE TABLE TEST_BOARDS (
    ID NUMBER(5) NOT NULL,                   -- ID
    P_ID NUMBER(5) NULL,                     -- 상위 ID값
    SUBJECT VARCHAR2(30) NOT NULL,           -- 게시판 제목
    CONTENT VARCHAR2(100) NULL,              -- 내용 
    CREATE_DATE DATE DEFAULT SYSDATE);       -- 생성일자
 

 

 

 

1
2
3
4
5
6
7
-- 샘플 데이터
INSERT INTO TEST_BOARDS VALUES (1, NULL'테스트1...','테스트합니다',SYSDATE);
INSERT INTO TEST_BOARDS VALUES (2, NULL'테스트2...','테스트합니다',SYSDATE);
INSERT INTO TEST_BOARDS VALUES (3, 1, '답변글 테스트1...','답변글 테스트합니다',SYSDATE);
INSERT INTO TEST_BOARDS VALUES (4, 3, '답변글 테스트2...','답변글 테스트합니다',SYSDATE);
INSERT INTO TEST_BOARDS VALUES (5, 1, '답변글 테스트1...','답변글 테스트합니다',SYSDATE);
INSERT INTO TEST_BOARDS VALUES (6, 2, '공부해요!','재미있게 공부해봅시다.',SYSDATE);

 

 

1
SELECT * FROM TEST_BOARDS;

 

 

 

1
2
3
4
5
6
7
-- 계층형 쿼리 이용
 
SELECT ID, ROWNUM,
             LPAD(' ', 2* (LEVEL-1)) || SUBJECT
 FROM TEST_BOARDS
START WITH P_ID IS NULL
CONNECT BY PRIOR ID = P_ID;

 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 리프노드 찾기 ( CONNECT_BY_ISLEAF )
-- 계층형 쿼리에서 해당 로우가 리프노드인지(자식노드가 없는노드인지) 
-- 여부를 체크하여 리프노트에 해당할 경우 1을 그렇지 않을경우 0을 반환
 
-- 해당 게시글의 상위 게시내용은 '[상위글]' 문자를 붙여 표현하였고 실제 클릭했던 
-- 게시판 항목인 ID값이 3인 항목의 게시 내용이 그 아래에 조회
 
SELECT ID, DECODE(CONNECT_BY_ISLEAF, 1, ' '||CONTENT,'[상위글] '||CONTENT||CHR(13)) CONTENTS
FROM TEST_BOARDS
WHERE CONNECT_BY_ROOT ID = 1 -- 루트노드의 ID의 값이 1인것만 조회
START WITH P_ID IS NULL
CONNECT BY PRIOR ID = P_ID
AND ID = 3 -- 클릭한 게시판 항목의 ID값 ( ID값이 3인 항목과 이 항목의 상위 노드를 추출) 
ORDER BY LEVEL;

 

 

 

 

 

 

 

[추가]

 

계층형 쿼리에서는 

제일먼전 START WITH절이 수행 

그 다음에 CONNECT BY 절을 처리

그 다음에 WHERE 절 

 

1
2
3
4
5
6
7
8
-- CONNECT BY 절에 AND 조건을 추가하게 되면 
-- 클릭한 게시판 항목의 ID값 ( ID값이 3인 항목과 이 항목의 상위 노드를 추출) 
-- 또한 P_ID 값이 NULL인 루트노드가 모두 추출된다.
SELECT ID, P_ID, SUBJECT
FROM TEST_BOARDS
START WITH P_ID IS NULL
CONNECT BY PRIOR ID = P_ID
AND ID = 3;

 


 


  1. IMP-00010: 엑스포트 파일이 유효하지 않고, 헤더가 검증에 실패했습니다

  2. 계층형 쿼리의 응용 - 답변형 계시판

  3. No Image 08Dec
    by
    2016/12/08 Views 8744 

    엑셀데이타를 DB 에 저장. Excel => oracle db restore

  4. No Image 08Dec
    by
    2016/12/08 Views 8648 

    오라클 암호 초기화 및 사용자 생성

  5. 오라클] 숫자 체크 방법 (IS_NUMBER, IS_NUMERIC)

  6. No Image 30Aug
    by
    2016/08/30 Views 8624 

    rownum 으로 범위지정을 해주고 싶을 때

  7. No Image 08Dec
    by
    2016/12/08 Views 8583 

    RMAN 을 이용한 오라클 백업

  8. No Image 08Dec
    by
    2016/12/08 Views 8581 

    [Oracle] 테이블 스페이스 및 사용자 계정 생성 방법

  9. [Oracle 12] ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다.

  10. 계층형 쿼리의 응용 - 달력만들기

  11. No Image 11Sep
    by
    2016/09/11 Views 8526 

    oracle 구동 방법 및 재부팅 시 oracle 자동 시작 설정 ( /etc/rc.local )

  12. No Image 08Dec
    by
    2016/12/08 Views 8444 

    오라클 계정 lock 해제

  13. No Image 08Dec
    by
    2016/12/08 Views 8417 

    오라클 해당 월 의 맨첫날 ~ 마지막 일 가져 오는 쿼리

  14. No Image 29Aug
    by
    2016/08/29 Views 8379 

    WITH문으로 쿼리를 임시테이블이나 View처럼 사용하자.

  15. 관리자( SYSTEM, SYS) 계정 비밀번호를 잊어버렸을때..

  16. No Image 30Aug
    by
    2016/08/30 Views 8336 

    Oracle 에서 NVL, NVL2 함수 사용하는 예제

  17. No Image 20Jan
    by
    2017/01/20 Views 8329 

    오늘을 기준으로 해당주(week)의 모든 일자조회

  18. No Image 20Jan
    by
    2017/01/20 Views 8241 

    오라클 ORDER BY : 정렬

  19. No Image 12Sep
    by
    2016/09/12 Views 8230 

    TOAD에서 Explain Plan 보기

  20. Oracle 시퀀스 생성, 추가, 삭제

Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved