[Programmers] 273711번 - 업그레이드 된 아이템 구하기 [MySQL]
[Programmers] 273711번 - 업그레이드 된 아이템 구하기 [MySQL]
1. 문제 풀이
PARENT 아이템의 희귀도가 RARE인 경우 정보를 출력하는 문제로 JOIN을 두 번하는 방식으로 해결할 수 있고, 서브쿼리와 IN 연산자를 활용해도 해결할 수 있다.
2. 쿼리
1. JOIN + JOIN
PARENT 아이템을 의미하는 p와 ITEM_TREE, 아이템을 의미하는 c를 전부 JOIN 해줬다. 이후 WHERE 절로 PARENT 아이템의 희귀도가 RARE인 레코드만 필터링해주고 아이템 정보를 출력했다.
1
2
3
4
5
6
7
8
9
10
11
SELECT
c.ITEM_ID,
c.ITEM_NAME,
c.RARITY
FROM ITEM_INFO AS p
JOIN ITEM_TREE AS t
ON p.ITEM_ID = t.PARENT_ITEM_ID
JOIN ITEM_INFO AS c
ON t.ITEM_ID = c.ITEM_ID
WHERE p.RARITY = 'RARE'
ORDER BY c.ITEM_ID DESC;
2. JOIN + 서브쿼리
WHERE 절로 필터링할 때 서브쿼리로 희귀도가 RARE인 아이템의 ITEM_ID를 가져와서 IN 연산자로 비교해줬다.
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
i.ITEM_ID,
i.ITEM_NAME,
i.RARITY
FROM ITEM_INFO AS i
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 i.ITEM_ID DESC;
This post is licensed under CC BY 4.0 by the author.