Problem Solving/프로그래머스

[MySQL] 프로그래머스 273711. 업그레이드 된 아이템 구하기

LeeJaeJun 2024. 2. 21. 09:53
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/273711

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드
-- ITEM_INFO 테이블을 PARENT 별칭으로 선택합니다.
SELECT CHILD.ITEM_ID, CHILD.ITEM_NAME, CHILD.RARITY
-- CHILD.ITEM_ID, CHILD.ITEM_NAME, CHILD.RARITY 열을 선택합니다.
FROM ITEM_INFO AS PARENT
-- ITEM_TREE 테이블을 IT 별칭으로 조인합니다.
JOIN ITEM_TREE AS IT ON IT.PARENT_ITEM_ID = PARENT.ITEM_ID
-- ITEM_INFO 테이블을 CHILD 별칭으로 다시 조인합니다.
JOIN ITEM_INFO AS CHILD ON IT.ITEM_ID = CHILD.ITEM_ID
-- 부모 아이템의 RARITY가 'RARE'인 행을 필터링합니다.
WHERE PARENT.RARITY = 'RARE'
-- CHILD.ITEM_ID를 기준으로 내림차순으로 결과를 정렬합니다.
ORDER BY CHILD.ITEM_ID DESC;

/*
첫 번째 JOIN 후
PARENT.ITEM_ID | PARENT.ITEM_NAME | PARENT.RARITY |
---------------------------------------------------
0              | ITEM_A           | RARE           
0              | ITEM_A           | RARE           
1              | ITEM_B           | RARE           
1              | ITEM_B           | RARE

두 번째 JOIN 후 다 불러왔을 때의 모습

# JOIN 안쓰는 법
SELECT CHILD.ITEM_ID, CHILD.ITEM_NAME, CHILD.RARITY
FROM ITEM_INFO PARENT, ITEM_TREE IT, ITEM_INFO CHILD
WHERE PARENT.RARITY = 'RARE'
AND PARENT.ITEM_ID = IT.PARENT_ITEM_ID
AND CHILD.ITEM_ID = IT.ITEM_ID
ORDER BY CHILD.ITEM_ID DESC;

 

728x90
반응형