--게시판 제목, 작성자, 내용, 등록일자
CREATE TABLE BOARD (
  NO NUMBER,
  TITLE VARCHAR2(100),
  WRITER VARCHAR2(50),
  CONTENTS VARCHAR2(200),
  REGDATE DATE,
  CONSTRAINT BOARD_PK PRIMARY KEY(NO)
);
 
 
--댓글 번호, 테이블 번호, 댓글 작성자, 댓글 내용
CREATE TABLE COMMENTS (
  C_NO NUMBER,
  NO NUMBER,
  C_WRITER VARCHAR2(50),
  C_CONTENTS VARCHAR2(100),
  CONSTRAINT COMMENT_PK PRIMARY KEY (C_NO),
  CONSTRAINT COMMENT_FK FOREIGN KEY (NO) REFERENCES BOARD(NO)
);

 
--오라클 복합 게시판 쿼리(댓글갯수, 페이징, 검색조건)
SELECT 
       b.rn, b.TITLE, b.WRITER, TO_CHAR(b.REGDATE, 'YYYY-mm-dd') AS REGDATE, b.cnt
  FROM (
        SELECT ROWNUM rn, a.TITLE, a.WRITER, a.REGDATE, a.cnt
          FROM (
                SELECT 
                       B.NO,B.TITLE, B.WRITER, B.REGDATE
                       ,(
SELECT COUNT(NO) 
                         FROM COMMENTS A
                         WHERE A.NO = B.NO
                        ) AS CNT                        --댓글갯수 
                  FROM BOARD B
                 WHERE B.TITLE = '%TEST%'                --검색조건
                 ORDER BY NO DESC
               ) a 
         WHERE ROWNUM <= 20                                --마지막 게시물 번호
       ) b
WHERE rn BETWEEN 11 AND 20;                                --11번부터 20번 게시물

cs


'DB > ORACLE' 카테고리의 다른 글

오라클 11g hr계정 연습문제  (3) 2018.02.28

+ Recent posts