강의

멘토링

커뮤니티

Inflearn Community Q&A

python1828's profile image
python1828

asked

Playing with a MySQL Database by Yalco

Subquery within a query

10분 26초 쿼리문 문의 드려요, P2.CategoryID = P1.CategoryID

Written on

·

382

0

SELECT 

ProductID, ProductName, CategoryID, Price

 

FROM Products AS P1 

WHERE Price < (SELECT AVG(Price) FROM Products AS P2 

WHERE P2.CategoryID = P1.CategoryID);

 

 

전체 코드 중에서

WHERE  P2.CategoryID = P1.CategoryID

요 코드가 이해가 안갑니다.

WHERE  절이 필요없지 않나요?

어차피 P2.CategoryID = P1.CategoryID

의 값은 , Products 의 CategoryID 값과 똑같으니까요?

 

혹시 제가 잘못 생각하고 있는건지 궁금해서 문의 드립니다.

WHERE 절을 추가한 이유가 궁금합니다.

데이터 엔지니어링DBMS/RDBMSmysqlsql

Answer 3

0

yalco님의 프로필 이미지
yalco
Instructor

수강평으로 주신 피드백 잘 보았습니다.
소중한 의견 참고하여 앞으로는 더 좋은 강의 만들어가도록 하겠습니다.

감사합니다.

0

yalco님의 프로필 이미지
yalco
Instructor

해당 절을 빼고 쿼리를 돌려보세요. 갯수가 2개 더 나올겁니다. (각 50개, 52개)

P2에서는 P1과 CaregoryID가 같은 행만 골라서 값을 비교해야 하는데 해당 절이 없으면 다 가져오게 됩니다.

둘 다 Products 테이블이지만, 서브쿼리 밖의 것과 안의 것은 완전히 별개의 테이블이기 때문에 조건으로 묶어줘야 하는거에요.
(같은 종이를 복사해서 두 명이 따로 들고 있다고 생각해보세요. '~행 말하는 거야'하고 서로 알려줘야 소통이 되겠죠)

찬찬히 쿼리를 살펴보시면 이해되실거에요. 😊

0

python1828님의 프로필 이미지
python1828
Questioner

자문 자답합니다. 제가 엄청 잘못 생각 하고있었습니다.

WHERE 절이 있어야지

해당 카테고리들의 평균값을 구해올수가 있네요

yalco님의 프로필 이미지
yalco
Instructor

방금 저도 답글 달았는데, 스스로 해결하셨네요!!!

python1828's profile image
python1828

asked

Ask a question