문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/273710
문제 설명
어느 한 게임에서 사용되는 아이템들은 업그레이드가 가능합니다.
'ITEM_A'->'ITEM_B'와 같이 업그레이드가 가능할 때
'ITEM_A'를 'ITEM_B'의 PARENT 아이템,
PARENT 아이템이 없는 아이템을 ROOT 아이템이라고 합니다.
예를 들어 'ITEM_A'->'ITEM_B'->'ITEM_C' 와 같이 업그레이드가 가능한 아이템이 있다면
'ITEM_C'의 PARENT 아이템은 'ITEM_B'
'ITEM_B'의 PARENT 아이템은 'ITEM_A'
ROOT 아이템은 'ITEM_A'가 됩니다.
다음은 해당 게임에서 사용되는 아이템 정보를 담은 ITEM_INFO 테이블과 아이템 관계를 나타낸 ITEM_TREE 테이블입니다. ITEM_INFO 테이블은 다음과 같으며, ITEM_ID, ITEM_NAME, RARITY, PRICE는 각각 아이템 ID, 아이템 명, 아이템의 희귀도, 아이템의 가격을 나타냅니다.
Column name | Type | Nullable |
---|---|---|
ITEM_ID | INTEGER | FALSE |
ITEM_NAME | VARCHAR(N) | FALSE |
RARITY | INTEGER | FALSE |
PRICE | INTEGER | FALSE |
ITEM_TREE 테이블은 다음과 같으며, ITEM_ID, PARENT_ITEM_ID는 각각 아이템 ID, PARENT 아이템의 ID를 나타냅니다.
Column name | Type | Nullable |
---|---|---|
ITEM_ID | INTEGER | FALSE |
PARENT_ITEM_ID | INTEGER | TRUE |
단, 각 아이템들은 오직 하나의 PARENT 아이템 ID를 가지며, ROOT 아이템의 PARENT 아이템 ID는 NULL 입니다.
ROOT 아이템이 없는 경우는 존재하지 않습니다.
문제
ROOT 아이템을 찾아 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME)을 출력하는 SQL문을 작성해 주세요. 이때, 결과는 아이템 ID를 기준으로 오름차순 정렬해 주세요.
코드
SELECT
II.ITEM_ID,
II.ITEM_NAME
FROM
ITEM_INFO AS II
JOIN
ITEM_TREE AS IT
ON
II.ITEM_ID = IT.ITEM_ID
WHERE
IT.PARENT_ITEM_ID IS NULL
ORDER BY
II.ITEM_ID
설명
FROM
아이템 정보 테이블의 전체 데이터
JOIN ON
ITEM_TREE 테이블의 ITEM_ID를 활용하여 이너조인 해준다.
WHERE
이때 부모의 아이템 아이디 컬럼이 NULL인 경우 조건을 설정해준다. 이는 루트 아이템이라는 것과 같다.
SELECT
출력 결과와 맞는 컬럼을 선택한다.
ORDER BY
아이템 아이디를 기준으로 오름차순 정렬한다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/SQL] Lv.4 - 서울에 위치한 식당 목록 출력하기 (0) | 2025.01.13 |
---|---|
[프로그래머스/SQL] Lv.3 - 업그레이드 할 수 없는 아이템 구하기 (0) | 2025.01.12 |
[프로그래머스/SQL] Lv.1 - 경기도에 위치한 식품창고 목록 출력하기 (0) | 2025.01.12 |
[프로그래머스/SQL] Lv.2 - 특정 물고기를 잡은 총 수 구하기 (0) | 2025.01.12 |
[프로그래머스/SQL] Lv.1 - 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2025.01.12 |