[SQL] 업그레이드 할 수 없는 아이템 구하기

NoHae·2025년 2월 4일

SQL

목록 보기
61/86

문제 출처

코딩테스트 연습 > IS NULL > 업그레이드 할 수 없는 아이템 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/273712

문제 설명


접근 방법

PARENT_ITEM_ID 가 IS NOT NULL 한 ITEM_ID를 불러오면 된다.
A -> B,C 로 업그레이드 가능
B -> D,E 로 업그레이드 가능
하므로 ITEM_TREE에서 업그레이드가 가능한 ITEM들의 PARENT_ITEM_ID를 가져오고, WHERE 절에서 NOT IN을 이용하여 업그레이드가 되지 않는 ITEM_ID에 접근하면 된다.

SELECT II.ITEM_ID, II.ITEM_NAME, II.RARITY
FROM ITEM_INFO II JOIN ITEM_TREE IT ON II.ITEM_ID = IT.ITEM_ID
WHERE II.ITEM_ID NOT IN (SELECT DISTINCT PARENT_ITEM_ID FROM ITEM_TREE WHERE PARENT_ITEM_ID IS NOT NULL)
ORDER BY II.ITEM_ID DESC;

알게된 점

풀이에선 JOIN을 했지만 본 쿼리에선 ITEM_TREE 테이블 정보를 사용하지 않으므로 JOIN을 하지 않아도 된다. 추가로 서브 쿼리의 DISTINCT가 빠져도 PARENT_ID는 0,1만 가져오므로 빠져도 된다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글