[프로그래머스/MySQL] 업그레이드 된 아이템 구하기

지누초이·2024년 3월 27일

프로그래머스

목록 보기
11/37
post-thumbnail

문제

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


노트

다음 업그레이드 아이템을 구해야하지만,
우리가 알 수 있는 것은 PARENT_ITEM_ID, 즉 어떤 아이템을 만들기 전 단계의 아이템 번호이다. 서브 쿼리를 이용해 다음 단계에 해당하는 아이템의 목록을 구하는 것을 먼저 진행했다.

  • 방법 1 - WHERE 절에서 서브쿼리 사용
    RARE 인 아이템들의 PARENT_ITEM_ID 목록을 서브 쿼리로 조회하고,
    해당 목록에서 얻은 아이템 번호에 맵핑되는 아이템의 ID와 이름, 레어도를 출력했다.

  • 방법 2 - FROM 절에서 서브쿼리 사용
    위와 같은 방식의 서브 쿼리로 가져온 목록을 FROM 절에 위치하고 alias를 붙혀 해당 목록에서 얻은 아이템 번호에 맵핑되는 아이템의 ID와 이름, 레어도를 출력했다.


정답

방법 1

SELECT
    ITEM_ID, ITEM_NAME, RARITY
FROM
    ITEM_INFO
WHERE
    ITEM_ID IN (
        SELECT
            B.ITEM_ID
        FROM
            ITEM_INFO A, ITEM_TREE B
        WHERE
            A.RARITY = 'RARE'
            AND A.ITEM_ID = B.PARENT_ITEM_ID    
    )
ORDER BY
    ITEM_ID DESC

방법 2

SELECT
    B.ITEM_ID
    , A.ITEM_NAME
    , A.RARITY
FROM
    ITEM_INFO A
    ,(	
    SELECT
        B.ITEM_ID
    FROM
        ITEM_INFO A
        , ITEM_TREE B
    WHERE
        A.RARITY = 'RARE'
        AND A.ITEM_ID = B.PARENT_ITEM_ID
    ) B
WHERE
    A.ITEM_ID = B.ITEM_ID
ORDER BY
    B.ITEM_ID DESC

더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗

0개의 댓글