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
운영게시판
최근게시물
PostgreSQL Q&A 6489 게시물 읽기
No. 6489
두번의 쿼리를 한번에 할 수 있는 방법이 있을까요?
작성자
최현덕(hdchoi)
작성일
2005-12-24 18:42
조회수
3,006

phpBB 2.0.18에서 album mod 2.0.53(앨범모드)를 사용하고 있습니다.

 

album mod 2.0.53(앨범모드)는 PostgreSQL에서 동작하게 수정을 해 놓은 상태구요.

 

사진을 보여 줄때 이전 사진/ 다음 사진의 썸네일을 보여 주기위해서 next_pic_id와 previous_pic_id를

 

구하기 위해서 현재는 두번의 쿼리를 하고 있습니다.

 

SELECT newp.pic_id, newp.pic_time
FROM album AS newp, album AS cur
WHERE cur.pic_id = $pic_id
AND newp.pic_id <> cur.pic_id
AND newp.pic_cat_id = cur.pic_cat_id
AND newp.pic_time >= cur.pic_time";

ORDER BY pic_time ASC LIMIT 1;

 

위의 쿼리는 next_pic_id를 구하는 쿼리구요.

 

SELECT newp.pic_id, newp.pic_time
FROM album AS newp, album AS cur
WHERE cur.pic_id = $pic_id
AND newp.pic_id <> cur.pic_id
AND newp.pic_cat_id = cur.pic_cat_id
AND newp.pic_time <= cur.pic_time";

ORDER BY pic_time DESC LIMIT 1;

 

previous_pic_id를 구하는 쿼리 입니다.

 

이 두 번의 쿼리를 한번에 할 수가 있을까요?

 

 

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

select 뒤에, privious 인지, next 인지를 구별하는 column 하나 더 두고,

 

union으로 묶으면 안되나요? :)

 

제가 생각한 것은 그것뿐인데, 그걸러면, 그냥 두번 쿼리를 하는 것도 비용측면에서 차이가 없어보입니다.

 

select 1 as isnext, .....

union

select 0 as isnext, .....

 

근데, limit가 먹힐지는 모르겠습니다.

----

확인해보니, limit가 안먹히네요.

limit 까지는 inline-view로 만드셔야할듯

 

select * from (select 1 as ..... limit 1) a

union

select * from (select 0 as ..... limit 1) a

 

아무리 보아도 조악한 쿼리여... :)

김상기(ioseph)님이 2005-12-26 15:10에 작성한 댓글입니다.
이 댓글은 2005-12-26 15:50에 마지막으로 수정되었습니다.

답변 감사합니다.

 

아래와 같이 만들었더니 잘 되네요.

 

select * from (SELECT newp.pic_id, newp.pic_time
FROM album AS newp, album AS cur
WHERE cur.pic_id = 5
AND newp.pic_id <> cur.pic_id
AND newp.pic_cat_id = cur.pic_cat_id
AND newp.pic_time >= cur.pic_time
ORDER BY pic_time ASC LIMIT 1) a

UNION

select * from (SELECT newp.pic_id, newp.pic_time
FROM album AS newp, album AS cur
WHERE cur.pic_id = 5
AND newp.pic_id <> cur.pic_id
AND newp.pic_cat_id = cur.pic_cat_id
AND newp.pic_time <= cur.pic_time
ORDER BY pic_time DESC LIMIT 1) a

 

 

최현덕(hdchoi)님이 2005-12-26 17:59에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6493tomcat 4.1.31 + postgresql 8.1 + jdbc + JSP 한글깨짐 [1]
김성식
2005-12-30
5268
6491치명적오류 [1]
이경호
2005-12-28
3764
6490[질문]select 에서 같은 컬럼이름 일 경우 [3]
레도
2005-12-26
3012
6489두번의 쿼리를 한번에 할 수 있는 방법이 있을까요? [2]
최현덕
2005-12-24
3006
6488쿼리문 예상치 않은 결과가 나오네요. -ㅁ-;; [3]
KSH
2005-12-21
2836
6487DB 설계관련 꼭좀 알려주세요 [1]
김지호
2005-12-20
3104
6485pg_dumall로 백업된 파일에서 특정 DB만 복구하는 방법 [2]
dba
2005-12-20
3498
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다