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
더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗