이준빈은 호박머리

IT 프로그래밍 개발 정보 블로그, 이준빈은 호박머리 입니다.

Database/ORACLE

오라클 페이징 쿼리(Oracle paging query)

준콩이 2012. 8. 14. 13:49
반응형

총 12개의 데이터를 가지고 있느 테이블이 있다고 가정합니다.


listnumber = 5  // 한 페이지 당 보여주는 게시물의 수

page_no = 1    // 페이지 번호


select *

       from (select A.*,FLOOR((ROWNUM - 1)/listnumber + 1) page, rownum

              from (

                     select board_title from board order by board_no desc

                     ) A

               )

       where page = page_no;

 

우선 FLOOR함수는 값의 내림값을 표현해주는 함수입니다.

SQL> select FLOOR(7.4) from dual;

SQL> 7

 

ROWNUM은 테이블이 가지고 있는 행의 번호를 순서대로 반환해줍니다.

SQL> select rownum from 테이블명;     //3개의 데이터를 가지고 있는 테이블이라 가정

SQL> ROWNUM

SQL> --------

SQL> 1

SQL> 2

SQL> 3

 

결국 총 데이터가 12개이면 rowum 은 1부터 12까지가 되죠.

 

FLOOR((ROWNUM - 1)/listnumber + 1) page

 

그리하여 rownum은 1부터 12까지 대입을 하게되고 수식에 의해서 page 는 3의 값을 가지게되고 

값 페이지값에 해당되는 rownum 값을 알게 되겠죠.

page     rownum

------- -----------

1          1

1          2

1          3

1          4

1          5

2          6

2          7

2          8

2          9

2         10

3         11

3         12

 

 

그럼

 

where page = page_no;

 

page 에 jsp또는 서블릿에서 넘어오는 페이지 번호를 대입하면 페이지별 데이터를 가져오게 됩니다.

반응형