인프런 커뮤니티 질문&답변
10분 26초 쿼리문 문의 드려요, P2.CategoryID = P1.CategoryID
작성
·
386
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 절을 추가한 이유가 궁금합니다.
퀴즈
SQL에서 JOIN을 사용하는 주된 목적은 무엇일까요?
여러 쿼리 결과를 세로로 합치기 위해
관계형 데이터베이스에서 분리된 테이블들을 연결하여 데이터를 조합하기 위해
쿼리 안에 또 다른 쿼리를 중첩하여 사용하기 위해
데이터베이스 스키마를 정의하기 위해
답변 3
0
0
해당 절을 빼고 쿼리를 돌려보세요. 갯수가 2개 더 나올겁니다. (각 50개, 52개)
P2에서는 P1과 CaregoryID가 같은 행만 골라서 값을 비교해야 하는데 해당 절이 없으면 다 가져오게 됩니다.
둘 다 Products 테이블이지만, 서브쿼리 밖의 것과 안의 것은 완전히 별개의 테이블이기 때문에 조건으로 묶어줘야 하는거에요.
(같은 종이를 복사해서 두 명이 따로 들고 있다고 생각해보세요. '~행 말하는 거야'하고 서로 알려줘야 소통이 되겠죠)
찬찬히 쿼리를 살펴보시면 이해되실거에요. 😊
0






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