프로그래머스 SELECT 21. 업그레이드 된 아이템 구하기
1. 문제 설명

2. 문제

3. 예시

4. 문제 풀이
select ITEM_INFO.item_id, ITEM_INFO.item_name, ITEM_INFO.rarity
from ITEM_INFO inner join ITEM_TREE
on ITEM_INFO.item_id = ITEM_TREE.item_id
where ITEM_TREE.parent_item_id in (select item_id from ITEM_INFO where rarity = 'RARE')
order by ITEM_INFO.item_id desc;
- 1 Line : item_id, item_name, rarity 출력
- ITEM_TREE를 참조하여 업그레이드가 가능한 아이템만 출력
- JOIN을 사용해야 하므로 테이블명.컬럼명 식으로 표기
- SELECT ITEM_INFO.item_id, ITEM_INFO.item_name, ITEM_INFO.rarity
- 2 Line : ITEM_INFO, ITEM_TREE를 join
- from ITEM_INFO inner join ITEM_TREE
- 3 Line : ITEM_INFO의 item_id와 ITEM_TREE의 item_id가 동일한 데이터만 출력
- on ITEM_INFO.item_id = ITEM_TREE.item_id
- 4 Line : rarity가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 정보를 출력
- 업그레이드 아이템은 ITEM_TREE에서 parent_item_id가 null이 아닌 아이템
- 0 > 1,2 > 3,4 순으로 업그레이드 가능
- 1,2는 0 / 3,4는 1이 필요 : parent_item_id가 0과 1이 포함되면 됨
- subquery 활용 : 등급이 ‘RARE’인 아이템의 다음 업그레이드 아이템까지 가져옴
- where ITEM_TREE.parent_item_id in (select item_id from ITEM_INFO where rarity = ‘RARE)
- 5 Line : item_id를 기준으로 내림차순 정렬
- order by ITEM_INFO.item_id desc;
5. 결과 확인



Share article