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
운영게시판
최근게시물
MySQL Q&A 26581 게시물 읽기
No. 26581
쿼리 결과내 재 검색 및 행, 열 변환에 대한 질문입니다.
작성자
푸른늑대
작성일
2007-04-08 10:49
조회수
4,560

T1 테이블이 다음과 같을때

A B C D
1 2 3 4
5 6 3 4
9 10 3 4
13 14 3 5

                      :


B 필드의 결과를 한 행으로 받기 위해서 다음과 같이 했습니다.
select
    (select B from T1 where A='1' and C=3' and D='4') as F1,
   (select B from T1 where A='5' and C=4' and D='4') as F2,
   (select B from T1 where A='9' and C=5' and D='4') as F3

이렇게 하면 결과로 
2 6 10
가 나오니까 제가 원하는 결과가 나오긴 합니다.

그런데 where에 오는 조건이 5개 정도에 데이터가 3만건 정도 되고 위와 같은 결과를 200여건 정도 뽑을려다 보니 시간이 너무 많이 걸리더군요.
그래서 쿼리를 좀 바꿨습니다.

첫번째,

select 
    (select B from TT where A='1') AS F1,
    (select B from TT where A='5') AS F2,
   (select B from TT where A='9') AS F3
from
    (select B from T1 where C='3' and D='4') TT

이렇게 했더니 TT 테이블이 없다는 에러가 발생하네요.  from 절에 알리아스로 사용한 TT는 테이블 명으로 사용하지 못하는 모양이네요.

그래서 아래와 같이 변경했습니다.

select
    (select B from T1  where TT.A=T1.A AND and TT.A='1') AS F1,
    (select B from T1 where TT.A=T1.A AND and TT.A='5') AS F2,
   (select B from T1 where TT.A=T1.A AND and TT.A='9') AS F3
from
    (select A, B from T1 where C='3' and D='4') TT

이렇게 했더니 값은 나옵니다만 한행으로 나오는게 아니고
F1 F2 F3
2 <NULL> <NULL>
<NULL> 6 <NULL>
<NULL> <NULL> 10

이렇게 대각선으로 적용되서 나와 버립니다.

일단 전체 데이터를 Where 조건절로 한번 검색 한 후 그 결과를 다시 서브쿼리로 검색하려는게 제 생각이었는데 마음대로 안나오네요.

첫번째 경우처럼 Where 조건절 밑에 쓴 서브쿼리의 알리아스는 from 다음에 테이블 명으로 쓸 수 없는지와
두번째 경우처럼 나오는 경우 이걸 한 행으로 만들 수 있는 방법은 없는지 알고 싶네요.

고수님들의 도움 부탁 드리겠습니다.
이 글에 대한 댓글이 총 1건 있습니다.

흠 서브쿼리를 많이 안써봐서 어떨런지 모르겟습니다.


select

 f1,f2,f3

 from

 (select

   sum((case a when 1 then b else 0 end)) f1,

   sum((case a when 5 then b else 0 end)) f2,

   sum((case a when 9 then b else 0 end)) f3

   from t1

   where c= 3 and d=4 and a in (1,5,9)) as tt


흠...퍼포먼스가 잘 나올런지는 모르겟습니다만..데이터가 1 row 씩 나온다는것을 알았을때 select ~ 를 여러번 날리는것 보다 case 문이 더 낮지 않나 싶기도 합니다. 


뭐 위의 쿼리는 from 절에서 안해도 되긴 합니다만...그냥 이것저것 테스트 해보다가 귀찮아서 그냥..


해보시구 퍼포먼스가 안나오면 다시...-.ㅠ


200건을 뽑는다는게...f1,f2,f3...~~~f200 인가요? -.ㅡa

님이 2007-04-09 21:50에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
26585디비 이전에따른 한글문제로 고민하고 있습니다.
2007-04-09
2012
26583[급]MySQL 바이너리 갱신 로그에 대해서 [1]
건방진연이
2007-04-09
2138
26582복원시 문제..(버전차이??) [1]
쏘울아치
2007-04-09
2404
26581쿼리 결과내 재 검색 및 행, 열 변환에 대한 질문입니다. [1]
푸른늑대
2007-04-08
4560
26580MySQL 문자셋 변경하는 법 [1]
김근영
2007-04-08
4389
26579mysql을 한서버에 4가지모두를 설치하였습니다 그런데.. [2]
아리리롱롱
2007-04-07
2521
26578쿼리문 일괄적 등록. [2]
DB.Love
2007-04-07
2281
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다