ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC 페이징 쿼리
    JDBC 2022. 2. 3. 20:17

    **유튜브 뉴렉쳐님의 강의를 들으면서 공부하고 정리한 내용입니다.

     

    페이징이란

    이전 페이지 다음페이지나 페이지 숫자를 눌러서 페이지를 이동하는 것이다.

    그게 가능하려면 쿼리를 조금 수정 해 줘야한다.

    우선 NOTICE 테이블을 확인 해 보자

    테이블에 데이터가 잘 들어가져있다..

     

    이것을 10개씩 쪼개서 나누는 작업을 해야한다.

     

    ID 앞에 붙어 있는 일련번호를 가지고 나누어 볼 수 있다.

    ROWNUM을 통해서 일련번호를 뽑아 볼 수 있다. 

     이렇게 뽑아지는 걸 볼 수 있다.

    이 ROWNUM을 이용해서 1~10까지의 결과물을 뽑아내려면 WHERE절을 이용하면 된다.

    1~10까지 잘 나오는 것을 확인 할 수 있다. 근데 그냥 이렇게만 해 주면 2부터 했을때는 출력이 안된다.

     

    이 ROWNUM이라는 것은 WHERE절 할 떄 나오는 것이라서 2부터 하면

    이렇게 안나온다.

     

    이럴때에 서브쿼리를 사용해주면 

    서브쿼리 안에 ROWNUM을 NUMM으로 별칭을 줘서 안쪽에서 만든 NUMM을 기준으로 값을 꺼내주는 것이다.

    2번부터도 잘 나오는 것을 확인 할 수 있다.

    그치만 여기에도 문제점은 있다.

     

    최신페이지에는 기본적으로 가장 최근에 등록 된 글부터 보여지게 된다.

    REGDATE를 기반으로 역정렬을 한 상태에서 데이터값을 뽑아내야한다.

     

    서브쿼리안에는 REGDATE를 기반으로 정렬 된 상태가 아니다 그렇기 때문에 아무리 데이터를 뽑아보아도 순서는 최신순으로 나오지 않을 것이기 때문에 한번더 서브쿼리를 작성 해 주어야 한다. 

    SELECT * FROM (
        SELECT ROWNUM NUMM, NOTICE.* FROM  (
            SELECT * FROM NOTICE ORDER BY REGDATE DESC
            )    
        )        
    WHERE NUMM BETWEEN 1 AND 10;

    이렇게 했는데 오류가 발생하였다

    그 이유는 REGDATE의 서브쿼리는 더이상 NOTICE 전체에 대한 정렬이 아니게 된다.

    일련번호로 데이터가 나온것을 기반으로 다시 정렬하려면 ROWNUM  결과값에 대한 별칭을 붙여주면 된다. 

    이렇게 해주면 전부다 가장 최신수의 글로 데이터가 뽑아져나온것을 확인할 수 있다.

    'JDBC' 카테고리의 다른 글

    JDBC로 이전/다음 페이지 구현  (0) 2022.02.04
    JDBC 목록 View 생성  (0) 2022.02.04
    JDBC 콘솔로 간단한 게시판 목록 만들어보기  (0) 2022.02.03
    CRUD 클래스 생성하기  (0) 2022.02.03
    JDBC 데이터 삭제하기  (0) 2022.02.03
Designed by Tistory.