작성
·
39
·
수정됨
0
안녕하세요! SUBQUERY 이해 (업데이트) 강의에서 예2의 비교 부분의 쿼리문을 JOIN으로 바꿔서 표현해보려고 하는데 실행 결과 category_id가 1부터 전부 나옵니다. 어떻게 해야 5('Comedy')보다 큰 것만 추출할 수 있을까요?
pdf파일 7page
JOIN으로 바꿔서 표현해본 쿼리문
실행 결과
답변 1
0
안녕하세요. 답변 도우미입니다.
현재 JOIN 쿼리에서 WHERE
조건이 잘못되어 원하는 결과가 나오지 않고 있습니다.
기존 WHERE
절 조건에서는 fc.category_id > (c.name = 'Comedy')
로 되어 있는데, 이 조건은 SQL에서 논리적으로 잘못된 방식입니다. (c.name = 'Comedy')
는 불리언 값으로 처리되어, 모든 category_id
에 대해 불리언 비교가 이루어지기 때문에 올바른 필터링이 되지 않습니다.
JOIN
을 사용하면서, Comedy
라는 이름을 가진 category_id
보다 큰 category_id
만 선택하려면, 먼저 Comedy
의 category_id
를 가져와서 그 값보다 큰 category_id
를 필터링해야 합니다. 이를 위해서는 서브쿼리로 Comedy
의 category_id
를 가져와 직접 비교하는 방식을 사용해야 합니다.
아래와 같이 Comedy
의 category_id
를 구하는 서브쿼리를 WHERE
절에서 활용하면 원하는 결과를 얻을 수 있습니다.
SELECT fc.category_id, COUNT(*) AS film_count
FROM film_category fc
JOIN category c ON fc.category_id = c.category_id
WHERE fc.category_id > (
SELECT category_id FROM category WHERE name = 'Comedy'
)
GROUP BY fc.category_id;
JOIN
을 통해 film_category
테이블과 category
테이블을 연결합니다.
WHERE
조건에서 fc.category_id
가 Comedy
의 category_id
보다 큰 항목만 선택하도록 합니다.
GROUP BY
로 category_id
별 COUNT
를 수행하여 결과를 집계합니다.
위와 같은 쿼리를 실행하면 Comedy
카테고리보다 큰 category_id
에 해당하는 영화 개수(film_count
)를 정확히 얻을 수 있습니다.
감사합니다. 잔재미코딩 드림