답변형 게시판 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 첫번째 게시물
참고 하세요~
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 |