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 22009 게시물 읽기
No. 22009
테이블 두개 조인하여 페이징 할 경우 문제가 생겼습니다.
작성자
급질문
작성일
2005-03-16 12:16
조회수
2,303

$query = "SELECT * ";
$query .= "FROM (SELECT ";
if(!$qry) {
$query .= "/*+ index_desc(table) */";
}
$query .= " rownum as rnum,a.subject,to_char(to_date(a.signdate,'yyyy-mm-dd'),'yyyy-mm-dd'),";
$query .= "to_date(a.enddate,'yyyymmdd')-to_date($curdate,'yyyymmdd'),a.filename,a.filesize,b.name";
$query .= " from table a, table b where a.id = b.id";
if($qry) {
$query .= $qry desc";
}
$query .= ") WHERE rnum >= $start_per_page AND rownum <= $num_per_page";

[오라클]테이블 두개 조인하여 페이징 할 경우 문제가 생겼습니다.

table a 와 table b 를 id 로 조인하여 목록을 출력합니다...
여기서 문제점이 두 가지가 발생 하였습니다...

1. primary 이외의 칼럼으로 순서를 정하고 싶은데 되지를 않더군요
- 위 $qry 변수에 값이 있을 경우 그 변수를 기준으로 목록을 출력하고
싶은데 되지를 않더군요 ex)order by a.filesize desc, order by b.name

2. from table a, table b where a.id = b.id order by a.filesize desc
이런식으로 하니까 filesize 순서대로 출력이 되지않을 뿐 아니라 두 번째 페이에서
중복 데이터가 출력됩니다...


테이블 조인하여 출력시 사용자 선택에 의한 출력순서를 정하는거와 페이징을 해결하고 싶습니다.
도움 부탁드립니다.

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

1. 일단 order by 절은 rownum에는 안먹구요

2. order by 기능을 사용하려면 row_number인가? 이 분석함수 쓰시면

   됩니다.

3. 단 지금 하신 스타일의 코딩 rnum <=     ,,,,,, rnum >=,,,

    이런 형태는 first_rows로 최적화 안되니까 full-scan으로 성능 떨어지구요 --> ( .... (.... where rownum <= ..) ... where rnum >= ....) 이런 식으로 하셔야 성능 좋구요

4. order by 포기 하구 조인만 문제라면 스칼라 서브쿼리(컬럼절에 쓰는 서브쿼리) 쓰시면서 3번 스타일로 코딩하시면 되구요.

5. 가변적으로 order by 하시던가 할려면 어쨋든 rownum으로는 안됩니다.

김흥수(protokhs)님이 2005-03-17 15:12에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
22012포인트 적립 및 차감에 대한 아이디어를 부탁드리겠습니다. [3]
김동주
2005-03-16
3450
22011JDBC Version 관하여 알고 싶습니다. [1]
짱장구
2005-03-16
1510
22010oracle bit 관련 [1]
손님
2005-03-16
1423
22009테이블 두개 조인하여 페이징 할 경우 문제가 생겼습니다. [1]
급질문
2005-03-16
2303
22007rownum에 대해.. [1]
초보
2005-03-15
2753
22006오라클 테이블 join 문제입니다..조언 부탁드려요~~ [2]
김길순
2005-03-15
1820
22005Fatal error: Call to undefined function: ocilogon()
최성일
2005-03-15
2463
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.027초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다