인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

가후님의 프로필 이미지
가후

작성한 질문수

갖고노는 MySQL 데이터베이스 by 얄코

쿼리 안에 서브쿼리

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

작성

·

341

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 절을 추가한 이유가 궁금합니다.

답변 3

0

얄팍한 코딩사전님의 프로필 이미지
얄팍한 코딩사전
지식공유자

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

감사합니다.

0

얄팍한 코딩사전님의 프로필 이미지
얄팍한 코딩사전
지식공유자

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

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

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

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

0

가후님의 프로필 이미지
가후
질문자

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

WHERE 절이 있어야지

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

얄팍한 코딩사전님의 프로필 이미지
얄팍한 코딩사전
지식공유자

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

가후님의 프로필 이미지
가후

작성한 질문수

질문하기