- ITEM_TREE 테이블의 'PARENT_ITEM_ID' 값이 NULL이 아니면, 해당 ITEM의 업그레이드 이전 아이템인 PARENT 아이템이 존재한다.
- PARENT_ITEM_ID 컬럼 값에 해당하는 ITEM들은 다음 업그레이드 가능 아이템이 존재한다.
- 해당 ITEM들의 RARITY가 RARE인 것들을 출력하면 된다.
조인을 할 때 처음 테이블을 무조건 왼쪽에 둘 필요가 없다.
유연하게 생각해야 한다.
서브쿼리가 필요하다면 서브쿼리를 활용해야 한다.
PARENT_ITEM_ID 값에 들어가 있는 ITEM_ID들이 RARE인지 확인해야 하므로 ITEM_INFO 테이블에서 RARITY가 RARE인 것들을 서브쿼리로 뽑아낸다.
두 개의 테이블을 JOIN 하여 PARENT_ITEM_ID 컬럼에 있는 값들이 ITEM_INFO 테이블에서 RARITY가 RARE인 값들을 뽑아낸 서브쿼리 안에 들어있다면 PARENT_ITEM_ID 값이 NULL이 아니면서 업그레이드 이전 아이템의 RARITY가 RARE인 아이템을 찾을 수 있다.
SELECT
A.ITEM_ID,
A.ITEM_NAME,
A.RARITY
FROM ITEM_INFO A
JOIN ITEM_TREE B
ON A.ITEM_ID = B.ITEM_ID
WHERE PARENT_ITEM_ID IN (SELECT
ITEM_ID
FROM ITEM_INFO
WHERE RARITY = 'RARE')
ORDER BY ITEM_ID DESC;
JOIN 결과 테이블은 위와 같다.
해당 테이블에서 PARENT_ITEM_ID 컬럼의 값에 해당하는 ITEM의 RARITY가 RARE인지 확인해야 하므로 서브쿼리를 이용해서 구하는 아이디어다.
댓글