본문 바로가기
카테고리 없음

[SQL 고득점 Kit] SELECT : 업그레이드 된 아이템 구하기

by shur_ 2024. 7. 31.


 

 

  • 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인지 확인해야 하므로 서브쿼리를 이용해서 구하는 아이디어다.

댓글