LFTYS2019
20
2019-05-15 15:32:36
0
365

JSP 게시판 댓글 구현 질문


Jsp로 댓글 구현을 하려던 중 막히는 것이 있어서 질문을 올립니다.

오라클 DB를 이용하여 댓글을 구현하고자 해서,


Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 RENUM                                     NOT NULL NUMBER
 RECONTENT                                 NOT NULL CLOB
 REWRITER                                  NOT NULL NVARCHAR2(20)
 REBOARDNUM                                NOT NULL NUMBER
 REPARENTRENUM                             NOT NULL NUMBER
 REDEPTH                                   NOT NULL NUMBER
 REORDER                                   NOT NULL NUMBER
 REDELETEFLAG                              NOT NULL NUMBER
 REREGDATE                                          DATE

위와 같은 DB table을 만들었습니다.

그리고


 INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '1111',
  4  'admin',
  5  7,
  6  0,
  7  0,
  8  1,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '2222',
  4  'admin',
  5  7,
  6  0,
  7  0,
  8  2,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '3333',
  4  'admin',
  5  7,
  6  0,
  7  0,
  8  3,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '4444',
  4  'admin',
  5  7,
  6  1,
  7  1,
  8  1,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '5555',
  4  'admin',
  5  7,
  6  1,
  7  1,
  8  2,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '6666',
  4  'admin',
  5  7,
  6  5,
  7  2,
  8  1,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '7777',
  4  'admin',
  5  7,
  6  1,
  7  1,
  8  3,
  9  0,
 10  sysdate
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '8888',
  4  'admin',
  5  7,
  6  5,
  7  2,
  8  2,
  9  0,
 10  SYSDATE
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '9999',
  4  'admin',
  5  7,
  6  5,
  7  2,
  8  3,
  9  0,
 10  SYSDATE
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL,
  3  '101010',
  4  'admin',
  5  7,
  6  9,
  7  3,
  8  1,
  9  0,
 10  SYSDATE
 11  );

1 row created.

SQL>
SQL> INSERT INTO reply VALUES(
  2  re_seq.NEXTVAL, -- 8
  3  '111111',
  4  'admin',
  5  7,
  6  5,
  7  2,
  8  4,
  9  0,
 10  SYSDATE
 11  );

1 row created.

SQL>
SQL> COMMIT;

위 와 같은 방식으로 11개의 DB record를 작성했습니다.

그리고 댓글의 댓글을 구현하기 위해


SELECT *  FROM (SELECT * FROM reply WHERE reboardnum=7) START WITH reparentrenum = 0 CONNECT BY PRIOR  renum = reparentrenum;

위 와 같은 문장을 썼습니다.

그랬더니,


   RENUM    REDEPTH
---------- ----------
        30          0
        31          0
        32          0

이렇게 나옵니다.

이것은 윗 문장의 바로 윗단에 있는 select로 시작하는 문장에서 출력되는 것 중 가장 중요한 것만 발췌한 것입니다.

즉, redepth로 댓글의 깊이를 만들어서 

depth

 0 댓글 

      1  댓글

      1  댓글

             2 댓글

 0 댓글

 위와 같은 느낌을 만들고 싶었지만,

redepth가 0인 것들만 출력되는 실정입니다.

차라리 DB record가 적용안 되어서 그런 거라면 좋겠는데.

 

select renum, redepth, reboardnum from reply where reboardnum=7;

     RENUM    REDEPTH REBOARDNUM
---------- ---------- ----------
        30          0          7
        31          0          7
        32          0          7
        33          1          7
        34          1          7
        35          2          7
        36          1          7
        37          2          7
        38          2          7
        39          3          7
        40          2          7

     RENUM    REDEPTH REBOARDNUM
---------- ---------- ----------
        41          0          7


위와 같이 등록한 record가 모두 존재 합니다.

이거 왜 이런 것인지 알 수 있겠습니까?




0
0
  • 댓글 0

  • 로그인을 하시면 댓글을 등록할 수 있습니다.