[답변]union 쿼리문입니다. 축소가능할까요? 0 1 2,135

by 성시현 [2007.07.27 11:45:59]


논리적 문제에 따라 Y집합만 바꾸니 참고하세요...;
Y안에 반복적으로 써 있는 것들을 보면 WHERE 조건에 쓰인 RDIERRLOG_TB 테이블간 비교 데이터 범위가 다릅니다.
즉, 바깥테이블엔 LOG_TIME조건들이 있는데 WHERE 아래테이블은 LOG_TIME조건없이 가져와서 비교합니다.

 

이 의미가 정말 맞다면 서브쿼리조건을 그대로 살려...

SELECT TAGSN
FROM RDIERRLOG_TB A
WHERE BR_CODE IN ('AL','CL','CU','PH','TB','TE')
  AND SUJ_CODE = '356'
  AND TAGSN NOT IN (SELECT DISTINCT(TAGSN)
                    FROM RDF01HH_TB
                    WHERE TAGSN IN (SELECT TAGSN
                                    FROM RDIERRLOG_TB
                                    WHERE BR_CODE IN ('AL','CL','CU','PH','TB','TE')
                                      AND SUJ_CODE = '356'
                                   )
  AND LOG_TIME BETWEEN '2007070901' AND '2007070924'

로 테스트 해 보시고,

 

조건 범위가 같아야 하는데 빠진거라면,

SELECT TAGSN
FROM RDIERRLOG_TB A
WHERE BR_CODE IN ('AL','CL','CU','PH','TB','TE')
  AND SUJ_CODE = '356'
  AND NOT EXISTS (  SELECT 1
                    FROM RDF01HH_TB B
                    WHERE B.TAGSN = A.TAGSN
                 )
  AND LOG_TIME BETWEEN '2007070901' AND '2007070924'

 

건승하시길...수고하세요~~

by 웁스 [2007.07.27 00:00:00]
오.....그 길던 쿼리가 저렇게도 바뀌는구나!!!
대단하십니다....
집합적인 사고방식........으윽....
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입