서브쿼리를 JOIN으로 바꾸기
157
9 asked
안녕하세요! SUBQUERY 이해 (업데이트) 강의에서 예2의 비교 부분의 쿼리문을 JOIN으로 바꿔서 표현해보려고 하는데 실행 결과 category_id가 1부터 전부 나옵니다. 어떻게 해야 5('Comedy')보다 큰 것만 추출할 수 있을까요?
pdf파일 7page

JOIN으로 바꿔서 표현해본 쿼리문

실행 결과

Answer 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)를 정확히 얻을 수 있습니다.
감사합니다. 잔재미코딩 드림
실습을 따라하는데 데이터베이스가 보이지 않아요
0
54
1
섹션1 4강부터 강의 실행 안됨 이슈
0
77
1
강의 자료 다운로드 관
0
90
1
강의 영상이 안나와요..
0
82
1
섹션4 화면 자체가 안나와요
0
118
1
강의 화면이 안 보이고, 목소리밖에 안나와요 ;;
0
116
1
데이터 삭제 질문
0
123
1
mysql 설치가 되지 않습니다.
0
1386
3
강의 결과 질문 - SQLD, 데이터베이스 설계, 프로젝트 구축 하여 취업
0
147
1
지마켓 파일 불러왔는데, 테이블이 생성이 안됩니다
0
119
1
실습 코드 깃허브 업로드
0
145
1
sql_safe_updates 옵션
0
154
1
sql 설치 문제
0
1423
2
중고급 SQL과 실전 데이터 문의
1
158
1
(맥환경) workbench 이용할 때 패스워드 입력 안해도 자동으로 활성화 가능해져요..
0
351
1
강의 커리큘럼 질문 있습니다.
0
176
1
강의 자료 이미지가 보이지 않습니다.
0
162
1
Join 구문에서 메인 테이블
0
178
1
예제문제 추가 쿼리 질문
0
204
2
강의 화면 출력이 되지 않는 현상
0
211
1
파이썬으로 다루는 MySQL
0
208
1
JOIN 활용 SQL 연습문제
0
179
1
Dbeaver 라는 SQL 쿼리 실행 툴을 써도 될까요?
0
305
1
Sakila PDF 파일 오류
0
190
1

