책 내용 질문하기
온라인 채점 결과 문의
도서
2026 시나공 컴퓨터활용능력1급 실기 기본서
페이지
0
조회수
18
작성일
2026-09-01
작성자
정*화
첨부파일

2026_기본모의고사_01회

-5. 인기강사처리 쿼리 7/7


사용현황 테이블을 제거하지 않았더니 쿼리 실행이 되지 않았고, 지우니 실행이 됐습니다. 지워야 하는 것은 알겠는데 강의보면 사용하지 않으니 지워야 한다고 설명해주셨으나, 왜 지우지 않으면 실행되지 않는지는 설명해주시지 않았습니다. 왜 지우지 않으면 실행되지 않을까요?

답변
2026-09-02 10:02:46

안녕하세요.

이유는 업데이트 대상인 <강사> 테이블을 바깥쪽에서 갱신하면서, <사용현황> 테이블을 바깥 쿼리에도 같이 조인하면 Access가 그 결과 집합을 “업데이트 가능한 레코드셋”으로 보지 못할 수 있기 때문입니다.

이 문제의 의도는 사실 구조가 단순합니다. 바깥쪽에서는 <강사> 테이블만 업데이트하고, <사용현황>하위 쿼리에서 조건을 판별하는 용도로만 써야 합니다.

예를 들면 정답 구조는 대략 이런 형태입니다.

UPDATE 강사
SET 강사.비고 = "인기강사"
WHERE 강사.강사코드 In
(
    SELECT 사용현황.강사코드
    FROM 사용현황
    GROUP BY 사용현황.강사코드
    HAVING Count(사용현황.개강코드) >= 12
);

여기서는 바깥쪽 업데이트 대상이 <강사> 하나뿐이라서 Access가 어느 레코드를 수정해야 하는지 명확합니다.

반대로 바깥쪽에 <사용현황>까지 추가해서

강사 INNER JOIN 사용현황

형태로 만들어 놓으면, 강사 1명에 사용현황 여러 건이 연결되는 1:N 구조 때문에 동일한 강사 레코드가 조인 결과에서 여러 번 나타날 수 있습니다. 게다가 하위 쿼리에서도 다시 <사용현황>을 사용하므로, Access 입장에서는 바깥 쿼리의 조인 결과를 통해 어떤 레코드를 안정적으로 업데이트해야 하는지가 복잡해집니다.

즉 핵심은,

<사용현황>은 “수정할 테이블”이 아니라 “12개 이상 개강했는지 판단하기 위한 테이블”

이라는 점입니다.

그래서 이 유형에서는 보통

바깥 UPDATE → 강사
하위 쿼리 → 사용현황

으로 분리해야 합니다.

쉽게 기억하면 “In + 하위 쿼리로 대상자를 찾는 업데이트 쿼리에서는, 조건 판별용 상세 테이블을 바깥 쿼리에 다시 조인하지 않는 것이 안전하다”고 보시면 됩니다.

즐거운 하루 되세요.

  • 관리자
    2026-09-02 10:02:46

    안녕하세요.

    이유는 업데이트 대상인 <강사> 테이블을 바깥쪽에서 갱신하면서, <사용현황> 테이블을 바깥 쿼리에도 같이 조인하면 Access가 그 결과 집합을 “업데이트 가능한 레코드셋”으로 보지 못할 수 있기 때문입니다.

    이 문제의 의도는 사실 구조가 단순합니다. 바깥쪽에서는 <강사> 테이블만 업데이트하고, <사용현황>하위 쿼리에서 조건을 판별하는 용도로만 써야 합니다.

    예를 들면 정답 구조는 대략 이런 형태입니다.

    UPDATE 강사
    SET 강사.비고 = "인기강사"
    WHERE 강사.강사코드 In
    (
        SELECT 사용현황.강사코드
        FROM 사용현황
        GROUP BY 사용현황.강사코드
        HAVING Count(사용현황.개강코드) >= 12
    );

    여기서는 바깥쪽 업데이트 대상이 <강사> 하나뿐이라서 Access가 어느 레코드를 수정해야 하는지 명확합니다.

    반대로 바깥쪽에 <사용현황>까지 추가해서

    강사 INNER JOIN 사용현황

    형태로 만들어 놓으면, 강사 1명에 사용현황 여러 건이 연결되는 1:N 구조 때문에 동일한 강사 레코드가 조인 결과에서 여러 번 나타날 수 있습니다. 게다가 하위 쿼리에서도 다시 <사용현황>을 사용하므로, Access 입장에서는 바깥 쿼리의 조인 결과를 통해 어떤 레코드를 안정적으로 업데이트해야 하는지가 복잡해집니다.

    즉 핵심은,

    <사용현황>은 “수정할 테이블”이 아니라 “12개 이상 개강했는지 판단하기 위한 테이블”

    이라는 점입니다.

    그래서 이 유형에서는 보통

    바깥 UPDATE → 강사
    하위 쿼리 → 사용현황

    으로 분리해야 합니다.

    쉽게 기억하면 “In + 하위 쿼리로 대상자를 찾는 업데이트 쿼리에서는, 조건 판별용 상세 테이블을 바깥 쿼리에 다시 조인하지 않는 것이 안전하다”고 보시면 됩니다.

    즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.