database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38569 게시물 읽기
No. 38569
가능할지 모르겠지만 질문 올려봅니다.
작성자
최진규(cjg1012)
작성일
2011-05-25 20:17
조회수
3,840

데이터 자료 100건을 가져올때
정렬은 DBMS_RANDOM.VALUE 사용하여 랜덤하게 뽑습니다.
문제는 페이징처리할때 처음 랜덤하게 가져온 순서되로 페이징 처리가 가능할까요??

DBMS_RANDOM.VALUE를 사용하니 1페이지 2페이지 계속 랜덤하니 나왔던 자료가 또나오고 하는 문제점이 있어서요...

이 글에 대한 댓글이 총 3건 있습니다.

질문을 정확히 이해 한지 모르겠으나, 다음과 같은 것을 원하시는 것 같읍니다. 

 

with test as
(
select 'A' alphabet, 'apple' example from dual
union
select 'B' alphabet, 'boy' example  from dual
union
select 'C' alphabet, 'cool' example  from dual
union
select 'D' alphabet, 'dog' example  from dual
union
select 'E' alphabet, 'elk' example  from dual
union
select 'F' alphabet, 'fox' example  from dual
union
select 'G' alphabet, 'girl' example  from dual
union
select 'H' alphabet, 'hello' example  from dual
union
select 'I' alphabet, 'ink' example  from dual
union
select 'J' alphabet, 'jam' example  from dual
)
SELECT tb2.*
  FROM (SELECT tb1.*, ROWNUM r
          FROM (SELECT test.*, DMBS_RANDOM.VALUE val
                  FROM test
                  ORDER BY val
               ) tb1
       ) tb2
  WHERE tb2.r >= :시작row    -- 시작 줄 (만약 한페이지가 5줄씩이면, 1, 6, 11 ...) 
    AND ROWNUM <= :최대줄수;  -- 한페이지당 줄 갯수

 

 

hopper(bunny)님이 2011-05-27 11:11에 작성한 댓글입니다.

댓글 감사합니다.

제가 설명을 잘 못했네요..^^

생각해보니 안될꺼 같네요..ㅎㅎ

적어주신 쿼리는 질의 할때마다 램덤하잖아요..페이징을 생각해보시면 시작 ROW를 1,6,11이런식으로 하면

1페이지 나왔던 자료가 2페이지 3페이지에도 나올수가 있죠..이런문제점 때문에 질문 올렸습니다..^^

제가 원하는건 전체 100건의 데이타가 있다면

이걸 10개씩 총 10페이지에 걸쳐 보여줍니다.  하지만 랜덤하게 보여지는거죠..

쉽게 게시판을 생각할때 웹페이지 최초 로딩때(그러니깐 1페이지죠) 이때 질의에서 100건이 램덤하게 정렬된 상태겠죠..그중에서 1페이지(그러니깐 10개)의 데이터가 뿌려지구요

2페이지 클릭하면 다시 램덤하게 select하는게 아니라 1페이지에서 램덤하게 정렬된 그 데이터들중에서 2페이지에 해당되는 데이터를 보여주는것이든요..ㅎㅎ

그래야 1페이지에서 나왔던 자료가 2페이지...n페이지에서도 중복으로 나오질 않으니깐요..

생각해보니 이건 쿼리 영역이 아니고 프로그램 영역이 되겠네요...ㅎㅎ

최진규(cjg1012)님이 2011-05-27 21:24에 작성한 댓글입니다.
이 댓글은 2011-05-27 21:26에 마지막으로 수정되었습니다.

동의합니다. 

hopper(bunny)님이 2011-05-27 22:09에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38572프로시져 내부 WHERE 절에서 '변수' 처리 사용할때... [5]
라클리
2011-05-27
5985
38571프로시져에서 시스템 테이블 사용시 에러 (ORA-00942) [2]
라클리
2011-05-26
5378
38570for 문을 거꾸로 돌리고 싶어요ㄱ- [3]
이종민
2011-05-26
4844
38569가능할지 모르겠지만 질문 올려봅니다. [3]
최진규
2011-05-25
3840
38568DB LINK를 통한 오라클 upgrade(8.x -> 10.x) [3]
매수신호
2011-05-25
4389
38567oracle SNMP 설정해보신분~.
김백중
2011-05-25
3953
38566.fmb 파일 컴파일 어떻게 하나요?
qa
2011-05-24
3453
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다