programmers.co.kr/learn/courses/30/parts/17046
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ฑ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit JOIN
[Level3] ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ




๐ฑ ํ์ด
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS AS O
LEFT JOIN ANIMAL_INS ON O.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
WHERE ANIMAL_INS.DATETIME IS NULL
ORDER BY O.ANIMAL_ID
ํธ์๋ฅผ ์ํด 'ANIMAL_OUTS AS O'๋ผ๊ณ ํ์ฌ ANIMAL_OUTS์ O๋ผ๋ ๋ณ์นญ์ ๋ถ์ฌ์ฃผ์๋ค
O.NAME๊ณผ ANIMAL_OUTS.NAME์ ๊ฐ์ ์๋ฏธ๋ฅผ ์ง๋๊ฒ ๋๋ค
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด LEFT JOIN์ ์ฌ์ฉํ์๋ค
LEFT JOIN ์ ์ผ์ชฝ ํ ์ด๋ธ์ ์ค์ฌ์ผ๋ก ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ณํฉํ๊ฒ ๋๋ค
์ด๋, ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋งค์นญ๋๋ ๊ฐ์ด ์๋๋ผ๋ ์ผ์ชฝ ๊ฐ์ ๋ฌด์กฐ๊ฑด ํ์๋๊ณ ์ค๋ฅธ์ชฝ ๊ฐ์ NULL์ด ๋๋ค


์์ ํ ์ด๋ธ ANIMAL_INS์ ANIMAL_OUT๋ฅผ
FROM ANIMAL_OUTS AS O
LEFT JOIN ANIMAL_INS ON O.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
๋ค์๊ณผ ๊ฐ์ด SQL๋ฌธ์ ์์ฑํ๋ฉด ANIMAL_OUTS๊ฐ ์ผ์ชฝ, ANIMAL_INS๊ฐ ์ค๋ฅธ์ชฝ์ผ๋ก LEFT JOIN์ด ๋๊ณ
ANIMAL_OUTS์ ANIMAL_INS์ ANIMAL_ID ๊ฐ์ด ๊ฐ์ ๊ฐ์ด ๋งค์น๋๋ค
'A352713'๊ฐ ์ด์ธ์๋ ๋งค์นญ๋๋ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์
'A349733'๊ณผ 'A349990'์ ANIMAL_INS ํ๋์ ๊ฐ์๋ ๋ชจ๋ NULL์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค

์ฐ๋ฆฌ๋ ์ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์
์์ ๊ฐ์ JOIN ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ์ฌ
ANIMAL_INS์ DATATIME ๊ฐ์ด NULL์ธ ๋ฐ์ดํฐ๋ง ์ฐพ๋๋ก SQL์ ์์ฑํ์๋ค