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 23969 게시물 읽기
No. 23969
쿼리도와주세요.
작성자
궁금이
작성일
2005-09-06 14:47
조회수
1,194

목차 데이타를 나타내는데 테이블에는 id, pageNum, title 정보가 들어가 있습니다.

근데 한 문서에서 각각의 페이지별로 목차를 나타내는것이 아니라 소제목이나 큰제목이 들어간 곳에만 목차를 등록합니다.. 필요한 곳만 목차를 생성해서 문서에 링크를 거는거죠..

예를 들어 10 page짜리 문서라고 하면

목차는

id pageNum title

001, 1paeg , 차례

002, 2page , 1.공공질서

003, 8page , 2.정보공유

--> 이런식으로 만들어집니다.

 

문제는 검색엔진을 이용해 문서의 내용 검색으로 검색된 단어가 있는 각각의 페이지 정보를 가지고 결과값을 넘겨줍니다.

그럼 그 넘어온 pageNum값들을 가지고 목차를 생성해 내야하는데 검색엔진에서 넘겨준 pageNum값은 3,5,7,8,10 이렇게 문서안에 있는 각각의 페이지값 입니다.

현재 목차테이블에 있는 세개의 목차 데이타를 가지고 있기 때문에 3개의 목차로 검색결과를 나타내야 합니다.

 

따라서 검색엔진에서 넘겨준 3,5,7,8,10 값으로 각각페이지 값보다 작은 페이지중 가장큰값을 구해야합니다.

select max(pageNum) , id from category where pageNum <= 3 group by id;

근데 넘어온 모든 값들을 각각의 max값을 구해서 union을 하고 다시 중복되는 id값이 있기 때문에 group by 해야 하고 넘어오는 값이 몇개나 될지 알수 없기때문에 100page짜리에서 모든 페이지에 검색한 단어가 다 들어가있다면 union만 100번을 해야합니다...

이렇게 되면 쿼리 수행속도가 너무 느릴것같은데.. 이럴경우 어떻게 하는게 좋을까요..

select id, page from (

select max(pageNum) , id , 3 page from category where pageNum <= 3 group by id

union

select max(pageNum) , id , 5 page from category where pageNum <= 5 group by id

.

.

.

) group by id

 

 

 

 

 

 

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

아래처럼 rownum을 잘 이용하시면 빠진 번호를 찾아낼 수 있을

듯 합니다.

아래는 예전에 제가 빠진 날짜 구하기 위해서 사용했던 쿼리 패턴일 뿐이므로, 님께서 머리는 아프겠지만 고민 좀 하셔야 할 듯...

 

select f1, f2, f3
    , rn

    , min(rn) over (partition by f1, f2) AS min_rn

    , max(rn) over (partition by f1, f2) AS max_rn

from (
 select rownum rn, a.*
 from (
  select f1, f2, f3
  from table
  order by f1, f2, f3 ) a
)
위의 rn, min_rn, max_rn을 잘 이용하시면 쿼리는 생각보다 훨씬

간단해질 수 있을 것입니다.

나그네님이 2005-09-06 15:59에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
23973두개의 쿼리문이 있는데 한개의 쿼리문으로 만들고 싶거든요 [2]
재키
2005-09-06
894
23972[질문]oracle 디렉토리 내 일부 파일이 삭제된 경우... [4]
강원진
2005-09-06
1271
23971쿼리가 궁금합니다. 도와주세요. [3]
궁금이2
2005-09-06
810
23969쿼리도와주세요. [1]
궁금이
2005-09-06
1194
23968hash partition -> range partition 이거 도저히 방법없나요? [2]
떨쁘가이
2005-09-06
1703
23967rman을 이용한 백업에서 level=0의 시점 [2]
이호한
2005-09-06
1103
23966XML 문의 드려요 ^^ [1]
곰돌이
2005-09-06
1591
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다