답변입니다.
---------------------------------------------------
select * from
(select rownum as rnum,content from tempboard start with parent_num is null
connect by prior num=parent_num) order by rnum desc;
==> 이방법은 답변글에 대한 처리가 제대로 되지 않습니다.
==>이방법 밖에 없는듯
select a.content
from (select /*+ index_desc(tempboard pk인덱스명)
content,num,parent_num
from tempboard ) a
start with a.parent_num is null
connect by a.prior num=a.parent_num;
== 이방법이 자료가 많을 때 문제가 되겠지만 가장 정확 할거 같군요.
hint를 써 인덱스를 내림차순으로 select한다음에
connect by 문장을 쓰는 겁니다.
저도 이리저리 찾다가 해결한 방법입니다.
역순으로 출력 되면서 그에 대한 답변처리를 제대로 해줍니다.
--------------------------------------------------
-- whatisid 님이 쓰신 글:
>> 답변글 있는 게시판 만드는 거라고 생각하시면 되는데요.
>>
>> num이라고 글번호를 나타내는 primary key 필드가 있고,
>> parent_num은 답변글의 번호입니다.
>> content는 글 내용이구요.
>>
>> 예를 들어 5번글에 답변을 쓴게 7번글이라면 7번글의 num=7,parent_num=5
>> 가 되는 게시판 답변글 형태입니다.
>>
>> 그래서 이걸 답변글 형태로 올바르게 출력하기 위해
>>
>> select content from tempboard start with parent_num is null
>> connect by prior num=parent_num;
>>
>> 처럼 쿼리를 날렸는데요, 답변글 위치 처리 잘되면서 select 되었네요.
>> 문제는 게시판인 관계로 최근글이 처음 나오게 이걸 역순으로 출력해야 하는데,
>> 방법이 없을까요?
>>
>> select * from
>> (select rownum as rnum,content from tempboard start with parent_num is null
>> connect by prior num=parent_num) order by rnum desc;
>>
>> 처럼 하면 되긴 되지만 퍼포먼스가 무지 떨어지는 쿼리 같아서...뭔가
>> 좋은방법 없을지 부탁드립니다.
|