본문 바로가기

DataBase/Oracle

[오라클]답변형 게시판 Query(최근글이 위로)

답변형 게시판 Query(최근글이 위로)-

start with, connect by와 hint를 이용한 답변형 게시판을 위한
Query 작성 예이니 참고 하세요~

1. 실습용 테이블 작성

create table BOARD
(
  SEQ        NUMBER not null constraints pk_board primary key,
  PARENT_SEQ NUMBER not null,
  YYYYMM     VARCHAR2(8) not null,
  DEPTH      NUMBER not null,
  SUBJECT    VARCHAR2(50) not null
)


2. 실습용 Data를 채운다.

insert into board values (1,0,'200601',0,'첫번째 게시물');
insert into board values (2,0,'200601',0,'두번째 게시물');
insert into board values (3,0,'200601',0,'세번째 게시물');
insert into board values (4,2,'200601',1,'두번째게시물 답변1');
insert into board values (5,2,'200601',1,'두번째게시물 답변2');
insert into board values (6,2,'200601',1,'두번째게시물 답변3');
insert into board values (7,4,'200601',2,'두번째게시물 답변1의 답변1');
insert into board values (8,4,'200601',2,'두번째게시물 답변1의 답변2');
insert into board values (9,0,'200601',0,'네번째 게시물');
insert into board values (10,0,'200601',0,'다섯번째 게시물');
insert into board values (11,10,'200601',1,'다섯번째 게시물의 답변1');
insert into board values (12,0,'200601',0,'여섯번째 게시물');


3. Query 작성

한페이지에 12개씩 보인다면 ...

SELECT 12 - RNUM as NO,
       SEQ,
       PARENT_SEQ,
       DEPTH,
       SUBJECT
FROM  (
             SELECT ROWNUM RNUM, SEQ, PARENT_SEQ, DEPTH, SUBJECT
             FROM  (
                            SELECT /*+ INDEX_DESC (BOARD PK_BOARD) */
                          SEQ, PARENT_SEQ, DEPTH, SUBJECT 
                            FROM   BOARD        
                         )                                    
          )     
START WITH    PARENT_SEQ = 0                            
CONNECT BY  PRIOR SEQ = PARENT_SEQ      

4. 결과

11        12        0        0        여섯번째 게시물
9        10        0        0        다섯번째 게시물
10        11        10        1        다섯번째 게시물의 답변1
8        9        0        0        네번째 게시물
2        3        0        0        세번째 게시물
1        2        0        0        두번째 게시물
5        6        2        1        두번째게시물 답변3
4        5        2        1        두번째게시물 답변2
3        4        2        1        두번째게시물 답변1
7        8        4        2        두번째게시물 답변1의 답변2
6        7        4        2        두번째게시물 답변1의 답변1
0        1        0        0        첫번째 게시물

참고 하세요~

 

'DataBase > Oracle' 카테고리의 다른 글

[오라클]프로세스확인  (0) 2008.04.28
[오라클]Top n 구현하기  (0) 2008.04.28
[오라클]컬럼값 갯수 세기  (0) 2008.04.28
Export받은 Dump File의 CharacterSet 확인 방법  (0) 2008.04.28
오라클 데이타 이전  (0) 2008.04.28