알고리즘 문제 풀이/프로그래머스

[SQL 고득점 Kit] SELECT - 업그레이드 된 아이템 구하기

파란색 가운 2024. 7. 2. 21:54

https://school.programmers.co.kr/learn/courses/30/lessons/273711

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

난이도 : 중

한번도 이런 쿼리문을 안짜봐서 개인적으로는 어렵게 느껴졌다

 

SELECT INFO.ITEM_ID,INFO.ITEM_NAME,INFO.RARITY
FROM ITEM_INFO AS INFO
JOIN ITEM_TREE AS TREE
ON INFO.ITEM_ID = TREE.ITEM_ID
WHERE TREE.PARENT_ITEM_ID IN (SELECT ITEM_ID FROM ITEM_INFO WHERE RARITY = "RARE")
ORDER BY TREE.ITEM_ID DESC;

1. 일단 ITEM_ID를 가지고 JOIN 시키고

2. TREE.PARENT_ITEM_ID -> 의 RARITY가 RARE면 된다

그래서 내부에 SELECT ITEM_ID FROM ITEM_INFO WHERE RARITY = "RARE" ->를 통해서, RARITY가 RARE인 아이템 아이디들을 먼저 산출해오고 , PARENT_ITEM_ID가 이 안에 있다면 선택하는 방식으로 출력