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

jy3578님의 프로필 이미지
jy3578

작성한 질문수

다양한 사례로 익히는 SQL 데이터 분석

주문별 고객별 연관 상품 추출 SQL로 구하기 - 01

주문별 연관상품 추출 SQL 관련 문의

작성

·

317

·

수정됨

0

안녕하세요?

주문별 연관 상품 추출 SQL에서

SELECT a.order_id, a.product_id, b.product_id
from ga.order_items a
join ga.order_tems b
on a.order_id = b.order_id
where a.product_id <> b.product_id

위 코드와 같이 where 절 안에서 같은 product_id가 조인 되는 경우를 filtering 하였습니다.

혹시 join 조건절에서(아래 sql과 같이) filtering 하지 않고 where 절에서 하는 이유가 있을까요?

SELECT a.order_id, a.product_id, b.product_id
from ga.order_items a
join ga.order_tems b
on a.order_id = b.order_id and a.product_id <> b.product_id

 

답변 2

0

jy3578님의 프로필 이미지
jy3578
질문자

네, 이해했습니다. 답변 감사합니다.

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

음. 이걸 where절이 아닌 조인절에서 하면 더 부자연스러울 것 같습니다. 물론 조인절에서 해도 되지만 조인절은 연결을 위한 조건으로 where절은 filtering하는 조건을 사용하는 것이 좀 더 명확해 보일 것 같습니다.

또한 조인절에 = 이 아닌 다른 조건( >, <, <>)을 사용하면 Hash join으로 풀리지 않고 Sort Merge 조인으로 풀려서 SQL 수행 시간이 좀 더 걸릴 수도 있습니다.

감사합니다.

jy3578님의 프로필 이미지
jy3578

작성한 질문수

질문하기