[Programmers_SQL] 22. 업그레이드 된 아이템 구하기

문정준's avatar
Mar 18, 2025
[Programmers_SQL] 22. 업그레이드 된 아이템 구하기
 
💡
프로그래머스 SELECT 21. 업그레이드 된 아이템 구하기

1. 문제 설명

notion image
 
 

2. 문제

notion image

3. 예시

notion image

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. 결과 확인

notion image
notion image
notion image
 
 
Share article

sxias