๊ณ์ธต์ ์ธ ํ ์ด๋ธ ๊ตฌ์กฐ์์์ SQL JOIN ํ์ฉ๋ฒ
์ผ์ ํ๋ค ๋ณด๋ฉด ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ์ด ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ๋ฅผ ์์ฃผ ์ ํ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋์ ํ ์ด๋ธ์์ ๋ค๋ฅธ ํ ์ด๋ธ๋ก ์ด์ด์ง๊ณ , ๊ทธ ํ ์ด๋ธ์์ ๋ ๋ค๋ฅธ ํ ์ด๋ธ๋ก ์ด์ด์ง๋ ๊ตฌ์กฐ์ธ๋ฐ, ์ด๋ฅผ ์ ๋๋ก ์ดํดํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํ๋ค. (ํ์๋ ๊ฝค.. ํท๊ฐ๋ฆฌ๊ณ ์ด๋ ต๋ค)
์ต๊ทผ์ ์ด๋ฌํ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์ ๋ค๋ฃจ๊ฒ ๋์๊ณ , ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋์๋ค.
1. ๋ฌธ์ ์ ์
์ฐ๋ฆฌ๊ฐ ์์ฃผ ๋ง์ฃผํ๋ ์ํฉ ์ค ํ๋๋ ์ฌ๋ฌ ํ ์ด๋ธ์ด ์๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ผ ํ ๋์ด๋ค.
์๋ฅผ ๋ค์ด, ๋์๊ด์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ, ๊ทธ ๋์๊ด ๋ด์ ์๊ฐ๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ, ๊ทธ๋ฆฌ๊ณ ๊ฐ ์๊ฐ์ ์๋ ์ฑ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ๋ค.
์ด๋ฌํ ๊ตฌ์กฐ์์, "ํน์ ๋์๊ด์ ์๋ ๋ชจ๋ ์ฑ ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค"๋ ์๊ตฌ ์ฌํญ์ด ์์ ์ ์๋ค.
์ด๋ด ๋ ํ์ํ ๊ฒ์ด SQL์ JOIN ๋ฌธ๋ฒ์ด๋ค.
2. ํ ์ด๋ธ ์ค์ ๋ฐ ๊ด๊ณ
์ฐ๋ฆฌ๋ ๋์๊ด, ์๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ฑ ํ ์ด๋ธ์ ์ฌ์ฉํด ์ด๋ฅผ ์ค๋ช ํ ์ ์๋ค.
๊ฐ ํ ์ด๋ธ์ ์๋ก ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค:
- library ํ ์ด๋ธ: ๋์๊ด์ ๊ธฐ๋ณธ ์ ๋ณด
- shelf ํ ์ด๋ธ: ๊ฐ ๋์๊ด์ ์๋ ์๊ฐ ์ ๋ณด
- book ํ ์ด๋ธ: ๊ฐ ์๊ฐ์ ์ํ ์ฑ ์ ๋ณด
-- library ํ
์ด๋ธ ์์
| library_id | library_name |
| ---------- | --------------- |
| 1 | ๊ตญ๋ฆฝ์ค์๋์๊ด |
| 2 | ํ๊ตญ๋์๊ด |
-- shelf ํ
์ด๋ธ ์์
| shelf_id | library_id | shelf_name |
| -------- | ---------- | ---------- |
| 1 | 1 | Shelf A |
| 2 | 1 | Shelf B |
| 3 | 2 | Shelf C |
-- book ํ
์ด๋ธ ์์
| book_id | shelf_id | book_title |
| ------- | -------- | ---------------- |
| 1 | 1 | Java Programming |
| 2 | 1 | Python Basics |
| 3 | 2 | Data Structures |
| 4 | 3 | Machine Learning |
์ด ๊ตฌ์กฐ์์ library ํ ์ด๋ธ๊ณผ shelf ํ ์ด๋ธ์ library_id๋ฅผ ํตํด ์ฐ๊ฒฐ๋๊ณ , shelf ํ ์ด๋ธ๊ณผ book ํ ์ด๋ธ์ shelf_id๋ฅผ ํตํด ์ฐ๊ฒฐ๋๋ค.
๋์๊ด ID๊ฐ 1์ธ ๊ตญ๋ฆฝ์ค์๋์๊ด์ ์๋ ์ฑ ๋ค์ ์กฐํํ๋ ค๋ฉด, ์ธ ๊ฐ์ ํ ์ด๋ธ์ JOINํด์ผ ํฉ๋๋ค.
์๋์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
SELECT book.book_title
FROM library
JOIN shelf ON library.library_id = shelf.library_id
JOIN book ON shelf.shelf_id = book.shelf_id
WHERE library.library_id = 1;
์ฟผ๋ฆฌ ์ค๋ช :
- ์ฒซ ๋ฒ์งธ JOIN: library ํ ์ด๋ธ๊ณผ shelf ํ ์ด๋ธ์ library_id๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ์ฌ ๋์๊ด์ ์๋ ์๊ฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ๋ ๋ฒ์งธ JOIN: shelf ํ ์ด๋ธ๊ณผ book ํ ์ด๋ธ์ shelf_id๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ์ฌ ์๊ฐ์ ์ํ ์ฑ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ์กฐ๊ฑด์ : WHERE library.library_id = 1์ ํตํด ๊ตญ๋ฆฝ์ค์๋์๊ด์ ์ํ ์ฑ ๋ค๋ง ์กฐํํ๋ค.
์คํ ๊ฒฐ๊ณผ:
| book_title |
| ----------------- |
| Java Programming |
| Python Basics |
| Data Structures |
์์ ๊ฐ์ด, ์ฌ๋ฌ ํ ์ด๋ธ์ด ์๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์์๋ JOIN์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ถ์ถํ ์ ์๋ค.!