2016-12-22 3 views
1

Access에서 SQL을 사용하여 2 개의 테이블간에 차이를 가져 오는 방법이 있습니까?두 테이블, 알 수없는 필드 간의 차이점

감사 기능을 구축하고 있는데 table1에서 값 (또는 값)이 table2의 해당 레코드와 일치하지 않는 모든 레코드를 반환하려고합니다. 기본 키는 항상 두 테이블간에 일치합니다. 그들은 항상 같은 수의 필드, 필드 이름 및 유형을 서로 포함합니다. 그러나 해당 필드의 번호와 이름을 쿼리를 실행하기 전에 확인할 수 없습니다.

Access SQL 솔루션을 찾고 있습니다. VBA로 이것을 해결하는 방법을 알고 있습니다.

감사합니다,

답변

0

알려진 필드와 필드를 비교하는 방법은 여러 가지가 있지만 그들의 이름을 모른 채 SQL에 필드에 액세스 할 수있는 방법은 없습니다. 주로 SQL은 필드가 테이블의 특정 순서를 갖지 않는 것으로 간주합니다. 순수한 Access-SQL에서 필요한 것을 성취 할 수있는 유일한 방법은 SQL-Command (모든 필드에 대한 * 자리 표시 자 같은 *)가있는 경우입니다. 그러나 그렇지 않습니다. Microsoft Access SQL Reference.

VBA에서 즉시 SQL 절을 만들면됩니다. (나는 당신이 VBA에서 그것을하고 싶지 않다고 말했지만 이것은 SQL로하고 있지만 SQL을 만들기 위해 VBA를 사용하는 것입니다.). VBA에서 모든 작업을 수행하는 데는 다소 시간이 걸릴 수 있지만 즉시 SQL을 작성하는 것은 매우 빠르며 특정 테이블에 최적화 할 수 있습니다. 그런 다음 SQL을 실행하면 얻을 수있는 가장 빠른 솔루션입니다.

+0

내가 묻는 것을 할 수 없기 때문에 이것을 답으로 선택했습니다.이 대답은이 점을 가장 분명하게 설명합니다. –

0
테이블 구조없이

확실하지하지만 당신은 아마 사용 NOT IN 연산자 (OR)를 사용하여 끝낼 수 WHERE NOT EXISTS

같은
select * from table1 
where some_field not in (select some_other_field from table2); 

(OR)

select * from table1 t1 
where not exists (select 1 from table2 where some_other_field = t1.some_field); 
+0

그렇지만 문제는 "some_field"라고 말할 수 없습니다. 나는 필드의 이름이나 수를 모른다. –

+1

@JamieMarshall, 비 SQL 접근법을 고려해보십시오. 또는 응용 프로그램 코드에서 수행 할 수 있습니다. – Rahul

-1
SELECT A.*, B.* FROM A FULL JOIN B ON (A.C = B.C) WHERE A.C IS NULL OR B.C IS NULL; 

테이블 A와 B가 있고 둘 다 C 열에있는 경우 여기에 a 하나의 쿼리로 모든 차이점을 얻으려면 위와 같이 전체 조인을 사용해야합니다.

+0

"EXCEPT"는 Access SQL에서 유효한 키워드로 보이지 않습니다 –

+0

okk 나는 –

+0

을 다시 편집 할 것입니다. 다시 한 번 C를 사용할 수 없습니다. 질문의 핵심은 열 또는 이름의 수를 모른다는 것입니다. –

관련 문제