2013-06-18 1 views
0

나는 빌을 가진 테이블을 가지고있다. 각 빌은 20 개의 서브 레지스터를 가질 수있다.SQL을 필터링하는 방법 다른 테이블에 두 개의 범위가있는 테이블

(표 ONE) 다른 테이블에서

Bill | SubRow | 
-----+------------+ 
1000 |  1  | 
1000 |  2  | 
1000 |  3  | 
1000 |  4  | 
1000 |  5  | 
1001 |  1  | 
1001 |  2  | 
1001 |  3  | 
1001 |  4  | 
1001 |  5  | 

(상위 5 당 빌, 최대 60,000 청구서 수), 나는 빌 번호와 subrows의 범위를

예 : (표 TWO) 나는 WA 쿼리에서

Bill | InitialRange | Final Range| 
-----+--------------+------------+ 
1000 |  1  |  2  | 
1000 |  4  |  5  | 
1001 |  3  |  5  | 

NT는 다음 달성하기 위해 : 테이블 하나에서 모든 레코드를

가 표시하려면를, NOT 나는 다음과 같은 설정을 얻어야한다 의미 표 2

의 범위 beetween : 내가 가진 무엇

Bill | SubRow | 
-----+------------+ 
1000 |  3  | 
1001 |  1  | 
1001 |  2  | 

지금까지 :

Select Bill,SubRow 
from TABLE ONE  
    LEFT join TABLE TWO ON TABLEONE.Bill= TABLETWO.bill 
    where Subrow < InitialRange and Subrow > FinalRange 

하지만 TABLETWO에서 두 번째 행의 두 번째 조건은 1000 법안에 대한 첫 번째 우선합니다.

어떻게해야합니까?

참고 예와

이미지 (I 테이블이 엉망이 나타납니다, 나는 그것을 해결하기 위해 노력할 것입니다) :

http://postimg.org/image/ymc3z2uzx/

+0

음, 테이블이 있습니다 엉망이되다. 그것들을 고쳐라. – Devorak

답변

1

이 시도 :

SELECT * FROM TABLE_ONE WHERE NOT EXISTS 
(SELECT * FROM TABLE_TWO 
WHERE TABLE_ONE.Bill = TABLE_TWO.Bill 
AND TABLE_ONE.SubRow BETWEEN TABLE_TWO.IinitialRange AND TABLE_TWO.FinalRange) 
+0

AWESOOME !!! 나는 지난 2 일 동안 그것과 고투하고 있었다. ... 고맙다 VERY MUCH, Mikhail – Devorak

관련 문제