[SQL] join: ๋‚ด๋ถ€ ์กฐ์ธ

[์›๋ณธ ๋งํฌ]

์กฐ์ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 2๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•ด์„œ ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
์กฐ์ธ์—๋Š” ๋‚ด๋ถ€์กฐ์ธ, ์™ธ๋ถ€์กฐ์ธ ๋“ฑ์ด ์žˆ๋Š”๋ฐ, ๋‚ด๋ถ€์กฐ์ธ์ด ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ ์ด๋ฉฐ, ์ž์ฃผ ์“ฐ์ด๋Š” ํŽธ์ด๋‹ค.

๋‚ด๋ถ€์กฐ์ธ์€ ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” Row๋งŒ์„ ๋ณ‘ํ•ฉํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ์ „๋ถ€ ๋ฒ„๋ฆฐ๋‹ค.

์˜ˆ์‹œ๋ฅผ ๋ณด์ž.
ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ postgreSQL์ด๋‹ค.

์ผ๋‹จ ์ด๋ฆ„๊ณผ ์ง์—…์„ ํ‘œํ˜„ํ•˜๋Š” ํ…Œ์ด๋ธ”, Worker๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋ฆ„๊ณผ ์ข…๊ต๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ…Œ์ด๋ธ” Religious_Person์ด ์žˆ๋‹ค.

์ด ๋‘˜์€ ๋ณ„๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด์ง€๋งŒ "name"์ด๋ผ๋Š”, ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๋™์ผํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
๊ทธ๋Ÿผ ์ด ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์‚ฌ๋žŒ์˜ ์ง์—…๊ณผ ์ข…๊ต๋ฅผ ํ•œ๋ฒˆ์— ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
๊ฐ๊ฐ ๋ถ„๋ฆฌํ•ด์„œ ๋‹ค๋ฃจ๊ณ  ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๊ทธ๊ฒƒ๋„ ๊ฝค ์ง€๋‚œํ•œ ์ผ์ด์ง€ ์•Š๊ฒ ๋Š”๊ฐ€?
์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์Šฌ๊ธฐ๋กญ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ join์ด๋‹ค.

join์€ select from ๋’ค์— ๋ถ™์–ด์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
select ... from ํ…Œ์ด๋ธ”A inner join ํ…Œ์ด๋ธ”B on ์กฐ์ธ์กฐ๊ฑด์‹
inner ํ‚ค์›Œ๋“œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. ๋””ํดํŠธ๊ฐ’์ด inner๋ผ์„œ.

๊ทธ๋Ÿผ ํ•œ๋ฒˆ ์จ๋ณด์ž.
์ €๊ธฐ์— ์กฐ์ธ์„ ๋•Œ๋ ค์„œ ํ•˜๋‚˜๋กœ ๋ฌถ์œผ๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์–‘์ชฝ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋งŒ ๋ฌถ์—ฌ ์ง์—…๊ณผ ์ข…๊ต ์ •๋ณด๋ฅผ ํ•œ๋ฒˆ์— ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๊น”๋”ํ•˜์ง€ ์•Š์€๊ฐ€.