2026_최종모의고사_02회
-1. 인기과목처리 쿼리 0/7
-쿼리 비교 X [인기과목처리] 쿼리 (UPDATE 과목 INNER JOIN 과외내역 ON 과목.과목ID = 과외내역.과목ID SET 과목.비고 = "인기과목" WHERE (((과목.과목ID) In (select 과목ID from 과외내역 group by 과목ID having sum(계약수업일수)>=700))); )이 정답(UPDATE 과목 SET 과목.비고 = "인기과목" WHERE (((과목.과목ID) In (select 과목ID from 과외내역 group by 과목ID having sum(계약수업일수) >= 700))); )과 다릅니다.
문제에서는 과목, 과외내역 테이블을 사용하라고 했는데 왜 문제집의 정답에서는 과목만 사용했나요?
안녕하세요.
문제에서 과목, 과외내역 테이블을 사용한다는 것은 반드시 두 테이블을 바깥쪽 쿼리에 모두 추가하라는 뜻은 아닙니다.
정답은 이렇게 처리한 것입니다.
바깥쪽 업데이트 대상 → 과목 테이블
하위 쿼리 → 과외내역 테이블
즉, 과외내역 테이블은 이미
select 과목ID
from 과외내역
group by 과목ID
having sum(계약수업일수)>=700
이라는 하위 쿼리에서 사용되고 있습니다.
반면 작성하신 쿼리는 바깥쪽에도 과외내역을 INNER JOIN으로 추가했습니다. 그런데 인기과목 여부는 이미 In (하위 쿼리)에서 판정하므로 바깥쪽 JOIN은 불필요합니다.
핵심은:
업데이트할 테이블은
과목하나
조건 판정에 필요한과외내역은 하위 쿼리에서 사용
따라서 문제의 “과목, 과외내역 테이블을 사용” 조건도 충족하면서, 정답처럼 바깥쪽에는 과목만 두는 것이 맞습니다.
즐거운 하루 되세요.
-
관리자2026-08-13 19:24:37
안녕하세요.
문제에서 과목, 과외내역 테이블을 사용한다는 것은 반드시 두 테이블을 바깥쪽 쿼리에 모두 추가하라는 뜻은 아닙니다.
정답은 이렇게 처리한 것입니다.
바깥쪽 업데이트 대상 → 과목 테이블 하위 쿼리 → 과외내역 테이블즉,
과외내역테이블은 이미select 과목ID from 과외내역 group by 과목ID having sum(계약수업일수)>=700이라는 하위 쿼리에서 사용되고 있습니다.
반면 작성하신 쿼리는 바깥쪽에도
과외내역을 INNER JOIN으로 추가했습니다. 그런데 인기과목 여부는 이미In (하위 쿼리)에서 판정하므로 바깥쪽 JOIN은 불필요합니다.핵심은:
업데이트할 테이블은
과목하나
조건 판정에 필요한과외내역은 하위 쿼리에서 사용따라서 문제의 “과목, 과외내역 테이블을 사용” 조건도 충족하면서, 정답처럼 바깥쪽에는
과목만 두는 것이 맞습니다.즐거운 하루 되세요.