oracle paging 재질문
- 작성자 :
- 한*훈
- 작성일 :
- 2011-08-18 10:09:30
- 조회수 :
- 1,750
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
예전 질문에 rownum에 분석 순서 문제가 아니라
마지막 문장만 #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
이렇게 고치면 된다고 하셨는데요.
테스트 하시고 주셨는지 궁금합니다.
말씀해주신대로 수정하고 테스트 하였지만
여전히 같은 이유로 조회가 안됩니다.
1부터가 아닌 2이상부터 조회하면 셀렉트가 되지 않습니다.
아래 수정한 쿼리를 첨부합니다.
SELECT
A.ID
, A.NAME
, A.DESCRIPTION
, A.USE_YN
, A.REG_USER
FROM
(
SELECT
ID
, NAME
, DESCRIPTION
, USE_YN
, REG_USER
, ROWNUM
FROM SAMPLE
WHERE 1=1
<isEqual prepend="AND" property="searchCondition" compareValue="0">
ID = #searchKeyword#
</isEqual>
<isEqual prepend="AND" property="searchCondition" compareValue="1">
NAME LIKE '%' || #searchKeyword# || '%'
</isEqual>
ORDER BY
ID DESC
) A
WHERE ROWNUM BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
마지막 문장만 #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
이렇게 고치면 된다고 하셨는데요.
테스트 하시고 주셨는지 궁금합니다.
말씀해주신대로 수정하고 테스트 하였지만
여전히 같은 이유로 조회가 안됩니다.
1부터가 아닌 2이상부터 조회하면 셀렉트가 되지 않습니다.
아래 수정한 쿼리를 첨부합니다.
SELECT
A.ID
, A.NAME
, A.DESCRIPTION
, A.USE_YN
, A.REG_USER
FROM
(
SELECT
ID
, NAME
, DESCRIPTION
, USE_YN
, REG_USER
, ROWNUM
FROM SAMPLE
WHERE 1=1
<isEqual prepend="AND" property="searchCondition" compareValue="0">
ID = #searchKeyword#
</isEqual>
<isEqual prepend="AND" property="searchCondition" compareValue="1">
NAME LIKE '%' || #searchKeyword# || '%'
</isEqual>
ORDER BY
ID DESC
) A
WHERE ROWNUM BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
A
안녕하세요.. 한동훈님..
공통컴포넌트쪽 query들이 위 방식으로 구현되어 있습니다.
이 경우는 추가적으로 외부 select 부분에 ROWNUM이 포함되지 않은 원인 같습니다.
다음 처럼 변경해 주십시오...
SELECT * FROM ( SELECT ROWNUM rn, TB.* FROM (
SELECT
A.ID
, A.NAME
, A.DESCRIPTION
, A.USE_YN
, A.REG_USER
FROM SAMPLE A
WHERE 1=1
ORDER BY ID
) TB ) WHERE rn BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
그럼.. 즐거운 하루되십시오.
감사합니다.
공통컴포넌트쪽 query들이 위 방식으로 구현되어 있습니다.
이 경우는 추가적으로 외부 select 부분에 ROWNUM이 포함되지 않은 원인 같습니다.
다음 처럼 변경해 주십시오...
SELECT * FROM ( SELECT ROWNUM rn, TB.* FROM (
SELECT
A.ID
, A.NAME
, A.DESCRIPTION
, A.USE_YN
, A.REG_USER
FROM SAMPLE A
WHERE 1=1
ORDER BY ID
) TB ) WHERE rn BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
그럼.. 즐거운 하루되십시오.
감사합니다.