๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Computer Science/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] joinํ•  ๋•Œ on ๊ณผ where์˜ ์กฐ๊ฑด์ ˆ ์ฐจ์ด(์„ฑ๋Šฅ, ์†๋„ ์ฐจ์ด)

by Jay Din 2023. 12. 19.
728x90
๋ฐ˜์‘ํ˜•

ํ•ต์‹ฌ

  • on: join ์ „์— ์กฐ๊ฑด์„ ํ•„ํ„ฐ๋ง
  • where: join ํ›„์— ์กฐ๊ฑด์„ ํ•„ํ„ฐ๋ง

 

์˜ˆ์‹œ

`ON` ์ ˆ๊ณผ `WHERE` ์ ˆ์€ SQL์—์„œ ์กฐ์ธ ์—ฐ์‚ฐ ์‹œ์— ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ ˆ์ž…๋‹ˆ๋‹ค.

JOIN์„ ์ด์šฉํ•  ๋• ์กฐ๊ฑด์ ˆ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์— ์ฐจ์ด๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

SQL ์ฟผ๋ฆฌ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด ์ฐธ๊ณ 

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด on์—์„œ์˜ ์กฐ๊ฑด๊ณผ where์—์„œ์˜ ์กฐ๊ฑด ์ฐจ์ด๋ฅผ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • `users` ํ…Œ์ด๋ธ” (user_id, name, email)
  • `orders` ํ…Œ์ด๋ธ” (order_id, user_id, name, total_amount)
# CASE 1)
SELECT *
FROM users a, orders b
WHERE a.user_id = b.user_id
and a.name = b.name
and a.id = 1004;

# CASE 2)
SELECT *
FROM users a
INNER JOIN orders b ON a.user_id = b.user_id
and a.name = b.name
and a.id = 1004;

 

  • CASE 1)
    • JOIN์„ ์‹คํ–‰ํ•œ ๋’ค -> ์กฐ์ธ ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์—์„œ id๊ฐ€ 1004์ธ ํ–‰๋“ค์„ ๊ฒ€์ƒ‰
  • CASE 2)
    • JOIN ์‹คํ–‰ ์‹œ, a.id๊ฐ€ 1004์ธ ํ…Œ์ด๋ธ”๊ณผ bํ…Œ์ด๋ธ”์„ ์กฐ์ธ

 

์ •๋ฆฌํ•˜๋ฉด

๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ฐ™์ง€๋งŒ, JOIN ํ”„๋กœ์„ธ์Šค์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

CASE1์˜ ์ฟผ๋ฆฌ๋Š” ์กฐ๊ฑด์„ ๋‚˜์ค‘์— ๊ฑธ์–ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋ฉฐ,

CASE2์˜ ์ฟผ๋ฆฌ๋Š” ์ด๋ฏธ ํ•„์š”ํ•œ ํ…Œ์ด๋ธ”์„ ๋ฝ‘์€ ๋’ค ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ CASE2์˜ ์ฟผ๋ฆฌ๋Š” JOIN ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์–‘์„ ์ค„์—ฌ ์šฉ๋Ÿ‰์„ ๋œ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ ๋ฉด์—์„œ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์‹คํ—˜ํ•ด๋ณด๋ฉด ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•