밑의 글의 문제와 똑같은 문제를 갖고 있습니다. 그런데 박찬모님의 설명이 초보인 저에게는 좀 어렵네요. 혹시 예제를 보여주신다면 감사하겠습니다. 그리고 제가 해본결과 order를 해주는 컬럼이 숫자열 일때만 되던데, 문자열도 되게하는 방법인가요?(order by 대신에 부등호를 사용해서 그런것 같은데...)
이 글을 보시면 꼭 답변 부탁드립니다.
::박찬모 님께서 쓰시길::
> rownum의 한계가 있는 것 같네요..
> 우선 항상 쿼리의 내용이 동일하게 상위의 10개만 가져오는 것이라면
> 문제가 없지만 만약 다음 10개를 가져와야 한다면 문제가 생깁니다.
> 왜냐면 rownum에 대해 오라클 문서를 읽어보시면 아시겠지만
> 일단은 만들어진 row에 번호를 붙이는 것이기 때문일겁니다.
> 요거에 대한 해결방법은
> 일단 여기에 서브쿼리를 사용해서 row 집합을 만드시구요..
> 거기에 rownum count라고 앨리어스를 붙여주고 실제 보여주는 select부분에 이것을 count로 받아서 이
> count를 가지고 where 부분에 조건을 주는 겁니다.
> 그리고 제가 한건 서브 쿼리가 2개로 했구요,, 물론 각 서브 쿼리가 from 뒤에
> 왔어요,,,
> 해보시면 잘 될겁니다.
> 그럼 ... 행운을 빕니다.
>
> > 안녕하세요..순규님과의 대화내용이 무엇인지 알지 못하겠군요..
> > 하지만..대충은 원하시는 내용을 알것 같은데...
> > 맞을지는 모르겠지만....
> >
> > select rnum,uid,fid,name,email,subject,
> > comment,signdate,ref,thread
> > from $code where rnum > 0 and rnum <= 10
> > order by fid DESC, thread ASC;
> > 을 원하시는 것으로 해석을 해보면.....
> >
> > select rnum,uid,fid,name,email,subject,
> > comment,signdate,ref,thread
> > from (select *
> > from $code
> > order by fid DESC, thread ASC)
> > where rownum > 0 and rownum <= 10 ;
> >
> > 하시면 어떨까용??
> > 원하시는 답변이기를 기대하면서~
> >
> > > 빠른 답변 감사드립니다.
> > >
> > > 그런데 순규님이 가르쳐주신 방법은 제가 원하는 결과를 가져오지는 못하
> > > 는 걸로 알고 있습니다.
> > > 즉, 쿼리를 아래와 같이 주면
> > >
> > > select rnum,uid,fid,name,email,subject,comment,signdate,ref,thread fro
> > > m $code where rnum > 0 and rnum <= 10 order by fid DESC, thread ASC;
> > >
> > > 먼저 (정렬되지 않은) 전체 레코드중에서 우선 10개를 가져오고 그 10개만
> > > 을 대상으로 다시 정렬을 하게 되니까 결과적으로는 원하는 결과를 얻을 수
> > > 가 없지 않나 생각합니다.
> > >
> > > 즉, 제가 원하는 것은 게시판에서 원글밑에 바로 답변글이 출력되는 계층
> > > 형 게시판을 구현하려고 하는 것인데 그러기 위해서 우선 전체 레코드를 답
> > > 변글이 원글밑에 바로 달리도록 정렬을 하고 그 정렬된 결과레코드세트에서
> > > 10개면 10개씩을 끊어서 가져오기 위한 SQL문을 원하는 겁니다.
> > >
> > > 그런데 제가 아직 오라클쪽에서 서투르다보니 어떤식으로 SQL을 때려야
> > > 하는지 모르겠습니다.
> > >
> > > 괜찮으시다면 다시한번 답변을 부탁드리고 싶네요..
|