테이블 관련 질문일려나요? ㅎㅎ 0 1 1,110

by 정대림 [2008.05.30 16:48:40]


코드값     low         high        date        data

def_reg      4001                  200711   60000
over_cnt     4001    15000  200711            7
over_cnt   15001    40000  200711            6
over_cnt   40001  125000  200711           5
over_cnt  125001                 200711          2

이런 데이터가 있습니다.

현재 쿼리로 데이터를 추출해서 사용하는데

제일 위에 줄이 디폴트 데이터여서 하단의 데이터와 비교자료로 써야 합니다.

그렇게 되면. 데이터를 추출할때

코드값 low high date data default_low defaul_date defula_date

이런식의 추출이 맞을까요?

아님 매번 반복작업으로 필요할때마다 추출이 맞을까요?

by finecomp [2008.05.30 16:53:36]
뭐 방법이야 여러가지 있겠지만...위 데이터 구조가 맞다라면 곱집합을 이용한 방법으로 푸는 것이 가장 간단할 수도 있습니다.

SELECT a.*, b.*
FROM(
SELECT *
FROM 테이블
WHERE code = 'def_reg'
) a
, (
SELECT *
FROM 테이블
WHERE code <> 'def_reg'
) b

대용량의 테이블이고 다른 조건이 없다면 a는 인덱스scan되게, b는 full scan되게 태우는 것이 유리하겠군요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입