본문 바로가기
Programming/Programmers

[프로그래머스] 우유와 요거트가 담긴 장바구니 (MySQL)

by 데이터현 2021. 11. 16.

https://programmers.co.kr/learn/courses/30/lessons/62284

 

코딩테스트 연습 - 우유와 요거트가 담긴 장바구니

CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가

programmers.co.kr

 

SELF JOIN 을 통해 해결했다. 답은 나오긴 했지만 상당히 비효율 적인 것 같아서 다른 풀이를 찾아봤다.

SELECT DISTINCT C1.CART_ID FROM CART_PRODUCTS C1 JOIN CART_PRODUCTS C2
ON C1.CART_ID = C2.CART_ID
WHERE (C1.NAME = 'Milk' and C2.NAME = 'Yogurt')
OR    (C1.NAME = 'Yogurt' and C2.NAME = 'Milk')
ORDER BY CART_ID;

 

확실히 아래 풀이가 훨씬 깔끔하다 JOIN을 쓰면서 서브쿼리를 사용하면 좋은 것 같다.

SELECT DISTINCT A.CART_ID
FROM (SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Yogurt') A
INNER JOIN (SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk') B
ON A.CART_ID = B.CART_ID

 

댓글