2013-04-17 1 views
1

일부 거래 ID와 직원 번호가있는 거래 테이블이 있습니다. 기본적으로 두 개의 다른 테이블이 있습니다.이 두 테이블은 트랜잭션 또는 직원으로 채워진 열을 처음부터 필터링해야합니다. MS Access에서 다른 테이블의 값을 사용하여 테이블을 필터링하는 올바른 방법은 무엇입니까?

내가 이렇게 내 쿼리를 실행되었습니다 이러한 유형의 쿼리를 실행할 때

SELECT * FROM TransactionMaster 
Where TransactionMaster.TransID 
NOT IN (SELECT TransID from BadTransactions) 
AND etc...(repeat for employee numbers) 

나 성능 저하가 나타났습니다. 이 쿼리를 작성하는 더 좋은 방법이 있는지 궁금합니다. 당신이 BadTransactionsTransID 일치를 포함하지 않는 모든 TransactionMaster 행을 원하는 경우

+1

subselect 대신 RIGHT JOIN을 사용하십시오. –

답변

3

LEFT JOIN 사용 행만 요청 곳 BadTransactions.TransID Is Null (타의 추종을 불허).

SELECT tm.* 
FROM 
    TransactionMaster AS tm 
    LEFT JOIN 
    BadTransactions AS bt 
    ON tm.TransID = bt.TransID 
WHERE bt.TransID Is Null; 

그 쿼리는 상대적으로 빠른 TransID와 색인을해야합니다.

사용 가능한 액세스 권한이있는 경우 "일치하지 않는 쿼리 마법사"를 사용하여 새 쿼리를 만듭니다. 유사한 쿼리를 만드는 단계를 안내합니다.

+0

감사! 이것은 훨씬 빨랐다. – pedram

관련 문제