Monday_August_17
.
.
.
์ผ๋จ left join์ ๋ํด์ ์๊ธฐ ์ ์ RDB(Relationship DataBase)
= ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ํด ์ฌ์ ์ง์์ด ์์ด์ผ ํ๋ค.
๋ชจ๋ ํ
์ด๋ธ์ด ์ ๊ทํ๊ฐ ๋์ง ์๊ณ ํ๋๋ก(๋ญ์ณ์) ์กด์ฌํ๋ค๊ณ ํ๋ค๋ฉด
์ฝ๊ธฐ๋ ๋งค์ฐ ์ฌ์ธ ๊ฒ์ด๊ณ , ์ฐ๊ธฐ๋ ๋งค์ฐ ์ด๋ ค์ธ ๊ฒ์ด๋ค.
๋ง์ฝ ์ ๊ทํ๊ฐ ์ ๋์ด์๊ณ , ํ
์ด๋ธ๋ ์ ๋๋์ด ์๋ค๋ฉด
**์ฝ๊ธฐ๋ ๋งค์ฐ ์ด๋ ค์ธ ๊ฒ์ด๊ณ , ์ฐ๊ธฐ๋ ๋งค์ฐ ์ฌ์ธ ๊ฒ์ด๋ค.
์? ์ด๊ฑฐ๋ ์ฝ๊ณ ์ด๋ ต๊ณ ... ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํด๋ณด์.
์ ๊ทํ๊ฐ ๋๋ฝ๊ฒ ์๋๋ ์๋ ํ
์ด๋ธ์ด ์๋ค. >> ํ
์ด๋ธ 1๊ฐ
์ ๊ทํ๊ฐ ๋๋ฌด ์ ๋์ด์๋ ํ
์ด๋ธ์ด ์๋ค. >> ํ
์ด๋ธ 3๊ฐ
1๊ฐ์ธ ํ
์ด๋ธ์ ์ธ๋ํค << ์ด๋ฐ๋์ ์ ๊ฒฝ ์ธ ํ์์์ด ๊ทธ๋ฅ ์ญ ์ฝ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๊ทธ๋์ ์ฝ๊ธฐ๊ฐ ์ฌ์ด ๊ฒ์ด๊ณ , ๋ฐ๋ฉด์ ์ฐ๊ธฐ๊ฐ ์ ์ด๋ ต๋??
์ค๋ณต๋๋ ๊ฐ์ด 1์ต๊ฐ๊ฐ ์๋ค๊ณ ์ณ๋ณด์.
์์ ์ ํ๋ ค๋ฉด 1์ต๊ฐ๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ํ๋ ๋ค ๋ฐ๊ฟ์ผ ํ๋ค.
3๊ฐ์ธ ํ
์ด๋ธ์ ์ธ๋ํค << ์ด๋ฐ๋์ ์ ๊ฒฝ์ ์จ์ค์ผ ํ๋ค.
์ผ๋จ ์ฝ๊ธฐ๋ ์ ์ด๋ ค์ธ๊น? ํ ํ
์ด๋ธ์ fk๋ฅผ ๊ฐ๊ณ ์๊ณ , ๊ทธ fk๊ฐ ๋ค๋ฅธ pk๋ฅผ ์ฐธ์กฐํ๋ค๋ฉด ํด๋น ํ
์ด๋ธ์ ์ฐพ์๊ฐ์ ๋ ์ฝ์ด์ผ ํ๋ค. ๊ทธ๋์! ์ฝ๊ธฐ๊ฐ ์ด๋ ค์ด ๊ฒ์ด๊ณ , ๋ฐ๋๋ก ์ฐ๊ธฐ๋ ์ ์ฝ๋?? ์ค๋ณต๋๋ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ์์ ํ๋์ ๋ฐ์ดํฐ๋ง ์์ ํด๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฌดํผ ๊ทธ๋์ join, ๊ทธ ์ค์์ left join(left outer join)์ด ๋ญ๋?
ํ ๋ฒ์ 2๊ฐ ์ด์์ ํ
์ด๋ธ์ ํจ๊ป ๋ณด๊ณ ์ถ์ ๋๊ฐ ์์ ๊ฒ์ด๋ค.
๊ทธ๋ด ๋ ๋ฐ๋ก join์ด ์ฐ์ด๋ ๊ฒ์ด๋ค.
์์ด๋๋กญ์ผ๋ก ์ฌ์ง์ ๋ณด๋๋๋ ํ์ฅ์๊ฐ HEIC? ์ธ๋ฐ
์ฌ์ง์ ์ฌ๋ฆด๋ผ๊ณ ํ๋ ์ฌ์ง์ด ์์ฌ๋ผ๊ฐ๋ค ใ
ใ
a์ b๊ฐ ๊ฒน์น๋ ๋ฐด๋ค์ด์ด ๊ทธ๋จ์ด ์๋ค๊ณ ์๊ฐํด๋ณด์.
a - ๊ต์งํฉ = 1๋ฒ
๊ต์งํฉ = 2๋ฒ (์ฐธ๊ณ ๋ก ๊ต์งํฉ ๋ถ๋ถ์ inner join์ด๋ผ๊ณ ํ๋ค.)
b - ๊ต์งํฉ = 3๋ฒ
(์์์ผ๋ก ํด์ฃผ์ธ์ ใ
ใ
)
Left Join์ด๋ a ๊ธฐ์ค์ผ๋ก 1๋ฒ + 2๋ฒ์ ํฉ์ณ์ ๋ณด๋ ๊ฒ์ด๋ค.
์ด๊ฒ ๋์ด๋ค!
๊ทธ๋ฅ ์ค๋ช ์ผ๋ก ํ๋ฉด ์ดํด๊ฐ ์๊ฐ ์ ์์ผ๋ ์ค์ท์ ํตํด ๋ณด๋๋ก ํ์.
๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ ํ ์ด๋ธ์ด ์๋ค.
๊ทธ๋ฐ๋ฐ ์์ธํ ๋ณด๋ topic์ด๋ผ๋ ํ ์ด๋ธ์ author_id๊ฐ author๋ผ๋ ํ ์ด๋ธ์ pk์ธ aid๋ฅผ ์ฐธ์กฐํ๋ค.
๊ทธ๋์! ์ฐ๋ฆฌ๋ ๋ณด๊ธฐ๊ฐ ๋ถํธํ๋ topic์ ๊ธฐ์ค์ผ๋ก(์ผ์ชฝ์ ๋๊ณ )
author์ ํฉ์ณ์ ๋ณด๊ณ ์ถ์๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ฌ์ง์ ํ ์ด๋ธ์ ์์๋ก left join์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
select * from topic LEFT JOIN author ON author_id=author.aid;
(์๋ฌธ์๋ก ํด๋ ์๊ด์ ์๋ค. ๊ทธ๋ฅ ๋์ ๋๋ผ๊ณ ๋๋ฌธ์๋ก ์ค ๊ฒ ์ด๋ค.)
ํด์ํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋๋ topic์(๊ธฐ์ค์ผ๋ก) ๋ณผ๊ฑฐ์ผ.
select * from topic๊ทธ๋ฐ๋ฐ author๋ left join์ ํ ๊ฑฐ์ผ
select * from topic left join author์ฎ์ ๋, topic์ author_id ๋ผ๋ ์น๊ตฌ๋ authorํ ์ด๋ธ์ aid๋ผ๋ pk์ผ.
select * from topic left join author on author_id=author.aid
์ด๋ ๊ฒ left join์ ํ๋ฉด ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฐธ๊ณ ๋ก ์์์ topicํ ์ด๋ธ์ 4๋ฒ์งธ์ database๋ผ๋ title์ ๊ฐ์ง ์น๊ตฌ๋ ์๋ฌด๊ฒ๋ ์ฐธ์กฐ๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์(null) ์์ ๋ฐ๋ผ์ค๋ joinํ ํ ์ด๋ธ์ data๋ ๋ชจ๋ null ์ด๋ค.
์ด๊ฒ์ด left join์ด๊ณ , ์ฐธ๊ณ ๋ก left join์ 2๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋ฌถ์ ์ ์๋ค.
์ค๋ช
์ด ์์ฃผ ์ ๋์ด์๋ค. ๊ผญ ์ ๋ฐ๐ ์ฐธ๊ณ ํ์ผ๋ฉด ์ข๊ฒ ๋ค.