1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ๋ฐฉ์ & ์ ๋ต์ฝ๋
๋ฌธ์ ๋ง ์ฝ์ด๋ ์์ดํ ์ด ์์ ์์ดํ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ๋ ์ ์๋ ๊ฑธ ๋ณด๋, ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ณด์ฌ์ง๋ค.
1. ๋จผ์ ITEM_INFOํ ์ด๋ธ์์ RARITY ๊ฐ 'RARE'์ธ ์์ดํ ๋ค์ ITEM_ID ๊ฐ์ ์ฐพ๋๋ค.
2. ITEM_INFO ํ ์ด๋ธ์ ITEM_ID๋ ITEM_TREE์ PARENT_ITEM_ID๊ฐ ๊ฐ๋ค๋ ์กฐ๊ฑด์ผ๋ก ITEM_INFO์ ITEM TREE ํ ์ด๋ธ์ ์กฐ์ธํ๋ค. WHERE ์ ์ 1์กฐ๊ฑด์ ๋ฌ์์ ITEM_TREE.PARENT_ITEM_ID๊ฐ 1์กฐ๊ฑด ์ ํด๋นํ๋์ง ์ฐพ์ ์ค๋ค.
๊ณ์ ํ๋ฆฐ๋ค....ใ ใ ใ ใ ใ ใ ใ ใ
์์ด๊ณ ๋จธ๋ฆฌ์ผ
๐ฆ JOIN 1๋ฒ ํ๋ ์ ๋ต์ฝ๋
SELECT ITEM_INFO.ITEM_ID, ITEM_INFO.ITEM_NAME, ITEM_INFO.RARITY
FROM ITEM_INFO
JOIN ITEM_TREE ON ITEM_INFO.ITEM_ID = ITEM_TREE.ITEM_ID
WHERE ITEM_TREE.PARENT_ITEM_ID IN (
SELECT ITEM_ID
FROM ITEM_INFO
WHERE RARITY = 'RARE'
)
ORDER BY ITEM_INFO.ITEM_ID DESC;
์ ํ๋ ธ๋์ง ๋จธ๋ฆฌ๊ฐ ์ํ๋ฉด ์ฝ๋๋ฅผ ํ ์ค์ฉ ํ๊ธ๋ก ์จ ๋ณด์.
๋ ํ ๊ธ๋ก ์จ ๋ณธ ๋ค์ ์ดํด๋ฅผ ํ๊ฒ ๋์๋ค...
์ฒ์์ ์กฐ์ธ ์กฐ๊ฑด์ด ํ๋ ค์ ์ค๋ต์ฒ๋ฆฌ๊ฐ ๋ ๊ฒ์ด์๋ค.
์ฒ์์ ์กฐ์ธ ์กฐ๊ฑด์ ์๋ชป ์ค์ ํ๋ค.
๋๋ ๊ณ์ธต ๊ตฌ์กฐ์ด๋๊น ์๋ฌด๋ฐ ์๊ฐ ์์ด ITEM_INFO.ITEM_ID์ ITEM_TREE.PARENT_ITEM_ID๋ฅผ ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ ์ ์์ ์ค์๊ฐ ์์๋ค. ์ค์ ๋ก๋ **ITEM_INFO.ITEM_ID์ ITEM_TREE.ITEM_ID**๊ฐ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ค.
์๋ํ๋ฉด ๋ถ๋ชจ ์์ดํ ์ ์ฐพ์์ฃผ๋ ๊ฑด WHERE ์ ์์ ์ฒ๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ WHERE ์ ์์ ITEM_TREE.PARENT_ITEM_ID ์กฐ๊ฑด์ผ๋ก 'RARE' ์์ดํ ์ ID๋ฅผ ์ฐพ๊ณ , ํ ์ด๋ธ JOIN์ ITEM_INFO.ITEM_ID = ITEM_TREE.ITEM_ID๋ก ์ฐ๊ฒฐ ๋๋ ๊ฒ์ด๋ค.
๐ฆ JOIN ๋ ๋ฒ ํ๋ ์ ๋ต์ฝ๋
SELECT ITEM_INFO.ITEM_ID, ITEM_INFO.ITEM_NAME, ITEM_INFO.RARITY
FROM ITEM_INFO
JOIN ITEM_TREE AS CHILD_TREE ON ITEM_INFO.ITEM_ID = CHILD_TREE.ITEM_ID
JOIN ITEM_TREE AS PARENT_TREE ON CHILD_TREE.PARENT_ITEM_ID = PARENT_TREE.ITEM_ID
WHERE PARENT_TREE.ITEM_ID IN (
SELECT ITEM_ID
FROM ITEM_INFO
WHERE RARITY = 'RARE'
)
ORDER BY ITEM_INFO.ITEM_ID DESC;
์์์ ์จ ์ค ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ์ JOIN์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟ๋ณด์๋ค.
ITEM_TREE ํ ์ด๋ธ์ ๋ ๋ฒ ์กฐ์ธํ์ฌ PARENT_ITEM_ID์ ITEM_ID๋ฅผ ๊ฐ๊ฐ ์ฐ๊ฒฐํ ๊ฒ์ด๋ค.
์ฒซ ๋ฒ์งธ JOIN (CHILD_TREE)์์๋ ITEM_INFO์ ITEM_TREE ํ ์ด๋ธ์ ์ฐ๊ฒฐํ๋ค. ์ฌ๊ธฐ์ ITEM_TREE.ITEM_ID์ ITEM_INFO.ITEM_ID๋ฅผ ์ฐ๊ฒฐํ์ฌ ์์ดํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
๋ ๋ฒ์งธ JOIN (PARENT_TREE)์์๋ ITEM_TREE ํ
์ด๋ธ์ ๋ค์ ์กฐ์ธํ์ฌ, PARENT_ITEM_ID๊ฐ ์ค์ ๋ก ๋ถ๋ชจ ์์ดํ
์ ITEM_ID์ ์ผ์นํ๋ ๋ถ๋ถ์ ์ฐพ๋๋ค. ์ด ์กฐ์ธ์ ๋ถ๋ชจ ์์ดํ
์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํ๋ค.
WHERE ์ ์์ PARENT_TREE.ITEM_ID๊ฐ ํฌ๊ท๋ 'RARE'์ธ ์์ดํ
์ ID์ ์ผ์นํ๋ ์์ดํ
๋ง ์ ํํด ์ค๋ค.