페이지네이션
페이지네이션이란 웹 사이트에서 데이터를 여러 페이지로 보여줄 수 있는 기능을 의미한다.
이번 프로젝트에서 페이지네이션 기능을 구현하기 위해,
DB파트에서 요청에 맞는 데이터를 잘라 서버 측에 전달해 주기로 했다.
사용자가 페이지 번호를 선택하면, 해당 페이지 번호가 DB로 넘어오게 되고,
이 넘어온 페이지 번호를 이용해 데이터를 계산하고 원하는 데이터만 잘라서 다시 반환한다.
우리는 한 페이지 당 9개의 데이터를 보여주기로 결정했고, 이때 계산되는 방식은
BETWEEN (선택한 페이지 번호-1)*9+1 AND 선택한 페이지 번호*9;
가 된다.
하지만 이 데이터를 그냥 찾아서 보내줄 수 없기 때문에,
ROW_NUMBER() 라는 함수를 사용해 순번을 매긴 뒤 BETWEEN을 사용해 원하는 범위의 데이터만 보내주어야 한다.
▼ ROW_NUMBER() 함수와 BETWEEN을 사용하여 원하는 페이지의 데이터를 조회하는 쿼리이다.
SELECT PRODUCT_NUM, PRODUCT_NAME, PRODUCT_PRICE,PRODUCT_ADDRESS, PRODUCT_LOCATION, PRODUCT_CATEGORY, RATING, PAYMENT_COUNT, WISHLIST_COUNT, FILE_NAME, FILE_EXTENSION, FILE_DIR
FROM (SELECT PRODUCT_NUM, PRODUCT_NAME, PRODUCT_PRICE,PRODUCT_ADDRESS, PRODUCT_LOCATION, PRODUCT_CATEGORY, RATING, PAYMENT_COUNT, WISHLIST_COUNT, FILE_NAME, FILE_EXTENSION, FILE_DIR,
ROW_NUMBER() OVER (ORDER BY PRODUCT_NUM DESC) AS ROW_NUM
FROM PRODUCT_INFO_VIEW)
WHERE ROW_NUM BETWEEN (COALESCE(?,1)-1)*9+1 AND COALESCE(?,1)*9;
사용자가 처음 상품 목록 페이지에 접속한 경우, 별도의 페이지 선택이 없기 때문에 페이지 번호는 NULL이 될 수 있다.
그로 인해 NULL 처리를 하는 COALESCE 함수를 사용하여 데이터가 NULL인 경우 1로 변경되도록 설정해 주었다.
DB 실행결과
전체 24개의 데이터가 있다.
위에서 작성한 쿼리의 ? 에 1을 넣으면
1페이지에 해당하는 데이터 9개만 조회가 된다.
'SQL > SQL' 카테고리의 다른 글
[MySQL] 오라클 → MySQL 데이터 이관작업 (현재 날짜 설정) (0) | 2024.10.03 |
---|---|
[DBeaver] 디비버 설치 (1) | 2024.10.01 |
[MySQL] MySQL 다운로드 / CLC 로 DATABASE, TABLE 생성 (0) | 2024.10.01 |
[SQL] CHECK 제약조건 (0) | 2024.09.29 |
[SQL] NOT NULL 제약조건과 FK제약조건 (0) | 2024.09.29 |