2013-04-12 3 views
6

아래의 SQL 코드를 사용하여 얻을 수있는 동일한 결과를 ms 액세스에서 어떻게 얻을 수 있습니까? EXCEPT 절을 인식하지 못합니다 ...EXCEPT 절의 대체 대체

SELECT DISTINCT 
     P.Name, 
     T.Training 
    FROM Prof AS P, 
     Training_done AS TC, 
     Trainings AS T 
WHERE (P.Name Like '*' & NameProf & '*') 
    AND (P.Primary_Area = T.Cod_Area) 
EXCEPT 
SELECT DISTINCT 
     P.Name, 
     T.Training 
    FROM Prof AS P, 
     Training_done AS TC, 
     Trainings AS T 
WHERE (P.Name Like '*' & NameProf & '*') 
    AND (P.Cod_Prof = TC.Cod_Prof); 

미리 감사드립니다. 위해

답변

4

는 두 번째를 조건을 결합하고 부정 할 수있는 EXCEPT 없애 :

SELECT DISTINCT 
     P.Name, 
     T.Training 
    FROM Prof AS P, 
     Training_done AS TC, 
     Trainings AS T 
WHERE ((P.Name Like '*' & NameProf & '*') AND 
     (P.Primary_Area = T.Cod_Area)) 
    AND NOT ((P.Name Like '*' & NameProf & '*') AND 
      (P.Cod_Prof = TC.Cod_Prof)); 
+1

+1 나는 어디에도 존재하지 않는 ({except query}) 줄을 생각하고 있었지만,이 특별한 경우에는 훨씬 더 간단합니다. –

3
SELECT A.x FROM A 
EXCEPT 
SELECT B.x FROM B 

가에 타의 추종을 불허하는 마법사를 찾으 를 사용

SELECT A.x FROM A 
LEFT JOIN B 
ON A.x = B.x 
WHERE B.x IS NULL 
+2

[this] (http://www.mssqltips.com/sqlservertip/2779/ways-to-compare-and-find-differences-for-sql-server-tables-and-data/) 문서에 따르면 'EXCEPT '절은 'NULL'조건뿐만 아니라 차이점을 발견 할 것입니다. – Profex

0

에 해당 MS Access> 만들기>쿼리 마법사 그리고 당신은 다음과 같은 결과를 얻을 것입니다

연합 내가 대신

SELECT TableMain.Field1 
FROM TableMain LEFT JOIN [Union] ON TableMain.[Field1] = Union.[field1] 
WHERE (((Union.field1) Is Null)); 
0

여기 안 명시 적으로 예를 쿼리 서브를 사용하는 조합에 몇 테이블을 사용하는 별도의 액세스 쿼리이지만,이 개 가져온 테이블과 선택을 UNION이 - 보내고 고려 해당 조합에서 특정 필드 조합의 인스턴스가 2 개 미만인 쌍. 이것은 각 테이블이 필드 조합에서 동일한 값을 갖는 레코드의 인스턴스를 두 개 이상 갖는 경우 이러한 레코드가 동일하며 결과 세트에서 제거 될 수 있음을 의미합니다. 그렇지 않은 경우, 하나의 테이블에만 고유하므로 다른 테이블과 일치하는 테이블이없는 레코드 만 가져옵니다. KW처럼 가난한 사람의 "예외"처럼.