1. ๋ฌธ์ ์ค๋ช
์ด๋ ํ ๊ฒ์์์ ์ฌ์ฉ๋๋ ์์ดํ ๋ค์ ์ ๊ทธ๋ ์ด๋๊ฐ ๊ฐ๋ฅํฉ๋๋ค. '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, ์์ดํ ๋ช , ์์ดํ ์ ํฌ๊ท๋, ์์ดํ ์ ๊ฐ๊ฒฉ์ ๋ํ๋ ๋๋ค.

ITEM_TREE ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ITEM_ID, PARENT_ITEM_ID๋ ๊ฐ๊ฐ ์์ดํ ID, PARENT ์์ดํ ์ ID๋ฅผ ๋ํ๋ ๋๋ค.

๋จ, ๊ฐ ์์ดํ ๋ค์ ์ค์ง ํ๋์ PARENT ์์ดํ ID๋ฅผ ๊ฐ์ง๋ฉฐ, ROOT ์์ดํ ์ PARENT ์์ดํ ID๋ NULL ์ ๋๋ค.
ROOT ์์ดํ ์ด ์๋ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง ์์ต๋๋ค.
์์ดํ ์ ํฌ๊ท๋๊ฐ 'RARE'์ธ ์์ดํ ๋ค์ ๋ชจ๋ ๋ค์ ์ ๊ทธ๋ ์ด๋ ์์ดํ ์ ์์ดํ ID(ITEM_ID), ์์ดํ ๋ช (ITEM_NAME), ์์ดํ ์ ํฌ๊ท๋(RARITY)๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด ์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์์ดํ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ฃผ์ธ์.
2. ์ถ๋ ฅ ์์

3. ๋ฌธ์ ๋ต์
SELECT
t.item_id, # ์
๊ทธ๋ ์ด๋ ๊ฐ๋ฅํ ์์ดํ
์ ๋ค์ ์์ดํ
i.item_name,
i.rarity
FROM item_info i
JOIN item_tree t
ON i.item_id = t.item_id
WHERE t.parent_item_id IN (SELECT # ์
๊ทธ๋ ์ด๋ ๊ฐ๋ฅ
item_id
FROM item_info
WHERE rarity = 'RARE') # ํฌ๊ท๋๊ฐ RARE์ธ ์์ดํ
์ id (0, 1, 3, 4)
ORDER BY t.item_id DESC;'๐ฅ๏ธ ์ฝ๋ฉํ ์คํธ > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [DataLemur] [Facebook] Page With No Likes (0) | 2026.03.10 |
|---|---|
| [DataLemur] [LinkedIn] Data Science Skills (0) | 2026.03.10 |
| [ํ๋ก๊ทธ๋๋จธ์ค] [SQL] ๋ฉธ์ข ์๊ธฐ์ ๋์ฅ๊ท ์ฐพ๊ธฐ (0) | 2026.03.09 |
| [ํ๋ก๊ทธ๋๋จธ์ค] [SQL] ํน์ ์ธ๋์ ๋์ฅ๊ท ์ฐพ๊ธฐ (0) | 2026.02.24 |
| [ํ๋ก๊ทธ๋๋จธ์ค] [SQL] ๋์ฅ๊ท ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ธฐ 2 (0) | 2026.02.24 |