책 내용 질문하기
온라인 채점 결과 문의
도서
2025 시나공 컴퓨터활용능력 1급 실기 기본서 (ver.2021)
페이지
0
조회수
70
작성일
2026-09-07
작성자
배*웅
첨부파일

2025_최신기출문제_2023년상시03

-4. 미출간내역조회 쿼리 0/7

-쿼리 비교 X [미출간내역조회] 쿼리 (SELECT 출판사.출판사명, 출판사.대표자명, 출판사.전화번호, 출판사.홈페이지주소 INTO 미출간출판사현황 FROM 출판사 LEFT JOIN 도서 ON 출판사.출판사번호 = 도서.출판사번호 WHERE (((출판사.출판사번호) Not In (SELECT 도서.출판사번호 FROM 도서))); )이 정답(SELECT 출판사.출판사명, 출판사.대표자명, 출판사.전화번호, 출판사.홈페이지주소 INTO 미출간출판사현황 FROM 출판사 WHERE (((출판사.출판사번호) Not In (select 출판사번호 from 도서))); )과 다릅니다.


만약 <출판사> 테이블과 <도서> 테이블 간 조인 속성을 아래와 같이 왼쪽 조인으로 변경하고, 다음과 같이 풀이하면 틀린가요?

쿼리 결과는 정답과 동일하게 나오지만, 문제에서 <도서> 테이블을 이용하라는 지시가 없었으므로, <도서> 테이블을 화면에 표시되지 않게끔 해야하나요?


답변
2026-09-08 10:56:18

안녕하세요.

네. 이 경우에는 결과가 같더라도 현재 작성한 쿼리는 정답 구조와 다르므로 채점에서는 오답 처리될 수 있습니다.

질문자 쿼리는 바깥쪽 FROM 절에 <출판사>와 <도서>를 둘 다 두고 LEFT JOIN을 사용했습니다.

FROM 출판사
LEFT JOIN 도서
ON 출판사.출판사번호 = 도서.출판사번호

그런데 동시에 WHERE 절에서 다시

출판사.출판사번호 Not In
(
    SELECT 도서.출판사번호
    FROM 도서
)

조건을 사용하고 있습니다.

이 문제에서 <도서> 테이블은 하위 쿼리 안에서만 사용하면 충분합니다. 즉 바깥쪽 쿼리에서는 <출판사>만 대상으로 하고, “도서가 없는 출판사”인지 판단할 때만 하위 쿼리에서 <도서>를 참조하는 구조가 정답입니다.

정답 구조는 다음과 같습니다.

SELECT 출판사.출판사명,
       출판사.대표자명,
       출판사.전화번호,
       출판사.홈페이지주소
INTO 미출간출판사현황
FROM 출판사
WHERE 출판사.출판사번호
Not In
(
    SELECT 출판사번호
    FROM 도서
);

따라서 질문하신 것처럼 디자인 화면의 위쪽 테이블 영역에는 <출판사>만 두는 것이 맞습니다. <도서>는 화면에 추가하지 않고, 조건란의 하위 쿼리 안에서만 사용하면 됩니다.

현재처럼 LEFT JOIN까지 추가해도 데이터에 따라 결과는 우연히 같을 수 있습니다. 하지만 불필요한 조인이 들어가서 SQL 구조가 달라지고, 경우에 따라서는 중복 레코드나 Null 처리 때문에 결과가 달라질 수도 있습니다.

즉 이번 문제는 이렇게 이해하시면 됩니다.

바깥 쿼리
→ 출판사 테이블만 사용
→ 실제로 추가할 레코드의 원본

하위 쿼리
→ 도서 테이블 사용
→ 도서가 있는 출판사번호 목록을 찾음

Not In
→ 그 목록에 없는 출판사만 선택

따라서 “문제에서 도서 테이블을 이용하라는 지시가 없어서 화면에 표시하지 않아야 한다”기보다는, Not In + 하위 쿼리라는 문제의 구조상 도서는 하위 쿼리 안에서만 사용하는 것이 맞다고 이해하시면 정확합니다.

즐거운 하루 되세요.

  • 관리자
    2026-09-08 10:56:18

    안녕하세요.

    네. 이 경우에는 결과가 같더라도 현재 작성한 쿼리는 정답 구조와 다르므로 채점에서는 오답 처리될 수 있습니다.

    질문자 쿼리는 바깥쪽 FROM 절에 <출판사>와 <도서>를 둘 다 두고 LEFT JOIN을 사용했습니다.

    FROM 출판사
    LEFT JOIN 도서
    ON 출판사.출판사번호 = 도서.출판사번호

    그런데 동시에 WHERE 절에서 다시

    출판사.출판사번호 Not In
    (
        SELECT 도서.출판사번호
        FROM 도서
    )

    조건을 사용하고 있습니다.

    이 문제에서 <도서> 테이블은 하위 쿼리 안에서만 사용하면 충분합니다. 즉 바깥쪽 쿼리에서는 <출판사>만 대상으로 하고, “도서가 없는 출판사”인지 판단할 때만 하위 쿼리에서 <도서>를 참조하는 구조가 정답입니다.

    정답 구조는 다음과 같습니다.

    SELECT 출판사.출판사명,
           출판사.대표자명,
           출판사.전화번호,
           출판사.홈페이지주소
    INTO 미출간출판사현황
    FROM 출판사
    WHERE 출판사.출판사번호
    Not In
    (
        SELECT 출판사번호
        FROM 도서
    );

    따라서 질문하신 것처럼 디자인 화면의 위쪽 테이블 영역에는 <출판사>만 두는 것이 맞습니다. <도서>는 화면에 추가하지 않고, 조건란의 하위 쿼리 안에서만 사용하면 됩니다.

    현재처럼 LEFT JOIN까지 추가해도 데이터에 따라 결과는 우연히 같을 수 있습니다. 하지만 불필요한 조인이 들어가서 SQL 구조가 달라지고, 경우에 따라서는 중복 레코드나 Null 처리 때문에 결과가 달라질 수도 있습니다.

    즉 이번 문제는 이렇게 이해하시면 됩니다.

    바깥 쿼리
    → 출판사 테이블만 사용
    → 실제로 추가할 레코드의 원본
    
    하위 쿼리
    → 도서 테이블 사용
    → 도서가 있는 출판사번호 목록을 찾음
    
    Not In
    → 그 목록에 없는 출판사만 선택

    따라서 “문제에서 도서 테이블을 이용하라는 지시가 없어서 화면에 표시하지 않아야 한다”기보다는, Not In + 하위 쿼리라는 문제의 구조상 도서는 하위 쿼리 안에서만 사용하는 것이 맞다고 이해하시면 정확합니다.

    즐거운 하루 되세요.

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