[프로그래머스 Lv.2] SELECT - 업그레이드 된 아이템 구하기

김민지·2024년 5월 9일
0

✨ 정답 ✨

-- 코드를 입력하세요
# SELECT T.ITEM_ID, I.ITEM_NAME, I.RARITY
# FROM ITEM_INFO AS I
#     INNER JOIN ITEM_TREE AS T
#     ON I.ITEM_ID=T.ITEM_ID
# WHERE T.PARENT_ITEM_ID IN (SELECT ITEM_ID FROM ITEM_INFO
# WHERE RARITY='RARE')

# ORDER BY T.ITEM_ID DESC;

SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID IN(
    SELECT ITEM_ID
    FROM ITEM_TREE
    WHERE PARENT_ITEM_ID IN (
        SELECT ITEM_ID
        FROM ITEM_INFO
        WHERE RARITY='RARE'
    )
    
)
ORDER BY ITEM_ID DESC;

🧵 참고한 정답지 🧵

💡💡 해설 💡💡

내 코드 설명
두 가지 방법이 있다.
1. INNER JOIN을 하는 것
ITEM_INFO 테이블과 ITEM_TREE 테이블을 ITEM_ID로 INNER JOIN을 하여 합쳐둔 후 PARENT_ITEM_ID가 RARITY가 RARE인 ITEM_ID 중 존재하는 것만 뽑아낸다.

  1. WHERE IN을 두 번 사용하는 것
    안쪽에 있는 WHERE IN에서 RARITY가 RARE인 ITEM_ID인 것을 뽑아내고 뽑아낸 ITEM_ID와 PARENT_ITEM_ID가 같은 것을 뽑는다.
    그리고 그 바깥 WHERE IN에서는 ITEM_TREE에서 자식 ITEM의 ITEM_ID를 뽑아낸다.
profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보