๐™ณ๐™ฐ๐šƒ๐™ฐ๐™ฑ๐™ฐ๐š‚๐™ด

๊ณ„์ธต์ ์ธ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์—์„œ์˜ SQL JOIN ํ™œ์šฉ๋ฒ•

ํ•ด๋ฒ„๋‹ˆ 2024. 10. 26. 09:56
๋ฐ˜์‘ํ˜•

์ผ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ๊ณ„์ธต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ๋ฅผ ์ž์ฃผ ์ ‘ํ•˜๊ฒŒ ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ์ด์–ด์ง€๊ณ , ๊ทธ ํ…Œ์ด๋ธ”์—์„œ ๋˜ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ์ด์–ด์ง€๋Š” ๊ตฌ์กฐ์ธ๋ฐ, ์ด๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. (ํ•„์ž๋Š” ๊ฝค.. ํ—ท๊ฐˆ๋ฆฌ๊ณ  ์–ด๋ ต๋‹ค)

์ตœ๊ทผ์— ์ด๋Ÿฌํ•œ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฃจ๊ฒŒ ๋˜์—ˆ๊ณ , ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

 


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;

 

์ฟผ๋ฆฌ ์„ค๋ช…:

  1. ์ฒซ ๋ฒˆ์งธ JOIN: library ํ…Œ์ด๋ธ”๊ณผ shelf ํ…Œ์ด๋ธ”์„ library_id๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ธํ•˜์—ฌ ๋„์„œ๊ด€์— ์žˆ๋Š” ์„œ๊ฐ€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  2. ๋‘ ๋ฒˆ์งธ JOIN: shelf ํ…Œ์ด๋ธ”๊ณผ book ํ…Œ์ด๋ธ”์„ shelf_id๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ธํ•˜์—ฌ ์„œ๊ฐ€์— ์†ํ•œ ์ฑ… ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  3. ์กฐ๊ฑด์ ˆ: WHERE library.library_id = 1์„ ํ†ตํ•ด ๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€์— ์†ํ•œ ์ฑ…๋“ค๋งŒ ์กฐํšŒํ•œ๋‹ค.

 

 

 

์‹คํ–‰ ๊ฒฐ๊ณผ:

| book_title        |
| ----------------- |
| Java Programming  |
| Python Basics     |
| Data Structures   |

 

 

 

 

 

 


 

์œ„์™€ ๊ฐ™์ด, ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ์—์„œ๋Š” JOIN์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.!

 

 

 

 

๋ฐ˜์‘ํ˜•