353페이지의 기출5 문제를 풀기 위해 문제에 제시되어있는 소비 테이블과 분류 테이블을 일단 모두 추가한 상태로 쿼리 작성을 진행했지만, 실행결과 아무런 레코드도 없는 쿼리가 생성이 되었고, 답지에 나와있는대로 소비 테이블을 제거하고 실행한 결과 정답과 일치하게 나왔습니다.
왜 반드시 소비 테이블을 제거한 채로 불일치 쿼리를 작성해야하는지 궁금합니다.
감사합니다
안녕하세요.
핵심은 불일치 쿼리는 “한쪽에는 있고 다른 쪽에는 없는 레코드”를 찾는 쿼리라는 점입니다.
예를 들어 이 문제가 ‘소비 테이블에 사용되지 않은 분류’를 찾는 문제라면, 기준은 다음과 같습니다.
분류테이블 → 모든 분류가 들어 있는 기준 테이블소비테이블 → 실제로 소비가 발생한 분류만 들어 있는 비교 대상
불일치 쿼리 마법사는 이 둘을 비교해서
분류에는 존재하지만 소비에는 없는 분류
를 찾아야 합니다.
그런데 쿼리 작성 화면에 소비 테이블을 다시 추가하여 일반적인 INNER JOIN으로 연결하면, Access는 먼저 두 테이블 모두에 존재하는 레코드만 남깁니다.
즉,
분류에는 있음 + 소비에는 없음
이라는 우리가 찾으려는 레코드가 INNER JOIN 단계에서 먼저 제거됩니다. 그래서 실행 결과가 0건이 될 수 있습니다.
불일치 쿼리는 내부적으로 보통 다음과 같은 방식으로 작동합니다.
분류 LEFT JOIN 소비
한 뒤,
소비.분류코드 Is Null
인 레코드를 찾습니다.
즉, “소비에 대응되는 데이터가 없는 분류”를 일부러 남겨야 하기 때문에, 추가로 소비 테이블을 INNER JOIN 형태로 끌어들이면 안 됩니다.
시험에서는 이렇게 기억하시면 쉽습니다.
불일치 쿼리 = 없는 것을 찾는 쿼리 → 기준 테이블의 모든 데이터가 살아 있어야 함
INNER JOIN = 양쪽에 모두 있는 것만 남김 → 불일치 대상이 사라질 수 있음
따라서 답지에서 소비 테이블을 제거한 것은 단순한 형식상의 이유가 아니라, 불일치 쿼리의 LEFT JOIN + Is Null 구조를 깨뜨리지 않기 위해서입니다.
즐거운 하루 되세요.
-
관리자2026-08-10 09:18:17
안녕하세요.
핵심은 불일치 쿼리는 “한쪽에는 있고 다른 쪽에는 없는 레코드”를 찾는 쿼리라는 점입니다.
예를 들어 이 문제가 ‘소비 테이블에 사용되지 않은 분류’를 찾는 문제라면, 기준은 다음과 같습니다.
분류테이블 → 모든 분류가 들어 있는 기준 테이블소비테이블 → 실제로 소비가 발생한 분류만 들어 있는 비교 대상
불일치 쿼리 마법사는 이 둘을 비교해서
분류에는 존재하지만 소비에는 없는 분류
를 찾아야 합니다.
그런데 쿼리 작성 화면에
소비테이블을 다시 추가하여 일반적인INNER JOIN으로 연결하면, Access는 먼저 두 테이블 모두에 존재하는 레코드만 남깁니다.즉,
분류에는 있음 + 소비에는 없음이라는 우리가 찾으려는 레코드가 INNER JOIN 단계에서 먼저 제거됩니다. 그래서 실행 결과가 0건이 될 수 있습니다.
불일치 쿼리는 내부적으로 보통 다음과 같은 방식으로 작동합니다.
분류 LEFT JOIN 소비한 뒤,
소비.분류코드 Is Null인 레코드를 찾습니다.
즉, “소비에 대응되는 데이터가 없는 분류”를 일부러 남겨야 하기 때문에, 추가로
소비테이블을 INNER JOIN 형태로 끌어들이면 안 됩니다.시험에서는 이렇게 기억하시면 쉽습니다.
불일치 쿼리 = 없는 것을 찾는 쿼리 → 기준 테이블의 모든 데이터가 살아 있어야 함
INNER JOIN = 양쪽에 모두 있는 것만 남김 → 불일치 대상이 사라질 수 있음따라서 답지에서
소비테이블을 제거한 것은 단순한 형식상의 이유가 아니라, 불일치 쿼리의 LEFT JOIN + Is Null 구조를 깨뜨리지 않기 위해서입니다.즐거운 하루 되세요.