SQL 연습 - 업그레이드 할 수 없는 아이템 구하기

지식저장공간·2024년 12월 10일

SQL

목록 보기
13/18

SQL 연습

문제

프로그래머스

정답

SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
JOIN ITEM_TREE USING(ITEM_ID)
WHERE ITEM_ID NOT IN 
(SELECT PARENT_ITEM_ID FROM ITEM_TREE WHERE PARENT_ITEM_ID IS NOT NULL)
ORDER BY ITEM_ID DESC;

풀이

업그레이드가 더이상 불가능한 아이템을 찾는다.
업그레이드가 불가능 하다는 뜻은 ITEM_ID가 ITEM_TREE 테이블 PARENT_ITEM_ID에 데이터가 존재하지 않아야한다.

ex) ITEM_TREE 테이블 PARENT_ITEM_ID 예시 값으로 0, 1 이 존재하고 0, 1은 누군가의 업그레이드에 사용된다는 뜻이다.

  1. ITEM_INFO 테이블과 ITEM_TREE 테이블을 JOIN
  2. WHERE 조건절에 ITEM_ID NOT IN
  3. WHERE 절 서브쿼리로 ITEM_TREE 테이블에 PARENT_ITEM_ID 모든 데이터 조회하며 NULL은 제외시켜준다.
  4. 서브쿼리로 ITEM_TREE 테이블에 존재하는 PARENT_ITEM_ID가 전부 TUPLE로 조회되고, ITEM_INFO 테이블의 ITEM_ID값이 해당 값에 존재하지 않으면 더이상 업그레이드가 불가능하다.
profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글