ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: SQL - JOIN
dirmathfl 2020. 10. 28. 18:36๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ํ์ด
๊ฐ ๋ฌธ์ ์์๋ ANIMAL_INS
, ANIMAL_OUT
์ ๊ฐ์ด ๋๋ฌผ์ด ๋ณดํธ์์ ๋ค์ด์จ ์ ๋ณด์ ๋ํ ํ
์ด๋ธ๊ณผ ๋ณดํธ์์์ ๋๊ฐ ๊ฒฝ์ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ
์ด๋ธ์ด ์ฃผ์ด์ง๋ค. ์ด๋ ๋ฌธ์ ์์๋ JOIN
์ ํตํด ๋ ๊ฐ์ง ํ
์ด๋ธ์ ํจ๊ป ์กฐํํ์ฌ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ๋ ๋ฌธ์ ๊ฐ ์ถ์ ๋๋ค. JOIN
์ ์ดํดํ๊ณ , ON
, WHERE
๋ฅผ ์ ์ ํ ์ด์ฉํ๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
์ฝ๋
์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ
SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS OUTS
LEFT JOIN ANIMAL_INS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL
ORDER BY OUTS.ANIMAL_ID
์
์์ ๊ฐ ๊ธฐ๋ก์ ์์ง๋ง, ๋ณดํธ์์ ๋ค์ด์จ ๊ธฐ๋ก์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
๋ฅผ ํตํด ANIMAL_ID
๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ด๊ฒ์ด NULL
์ธ ๊ฒฝ์ฐ๊ฐ ์ ๋ต์ด๋ค.
์์๋๋ฐ์ ์์์ต๋๋ค
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_OUTS OUTS, ANIMAL_INS INS
WHERE INS.DATETIME > OUTS.DATETIME AND INS.ANIMAL_ID = OUTS.ANIMAL_ID
ORDER BY INS.DATETIME
JOIN
์ ์ฌ์ฉํ์ง ์๊ณ ๋ WHERE
๋ฅผ ํตํด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ๋ฌธ์ ์์ ๋ณดํธ ์์์ผ๋ณด๋ค ์
์์ผ์ด ๋น ๋ฅธ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ผ๋ผ๊ณ ํ์์ผ๋ INS.DATETIME > OUTSDATETIME
์ด ๋๋ค.
์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)
SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
LIMIT 3
JOIN
์ ํ ํ์ OUTS.ANIMAL_ID
๊ฐ NULL
์ด๋ผ๋ฉด ์
์์ ๊ฐ์ง ์์ ๋๋ฌผ์ด๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๊ณ LIMIT 3
์ ํตํด ์ถ๋ ฅ ์ ํ์ ๋๋ฉด ๋ฌธ์ ์์ ์ฐพ๊ณ ์ ํ๋ ๋ต์ด ๋๋ค.
๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS
RIGHT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME
ORDER BY INS.ANIMAL_ID
์ฒ์์๋ INS.SEX_UPON_INTAKE LIKE '%Intact%' AND OUTS.SEX_UPON_OUTCOME NOT LIKE '%Intact%'
๋ก ์์ฑํ์๋ค. ๋ค์ ์๊ฐํด๋ณด๋ฉด INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME
์ผ๋ก ๊ฐ๋ตํ ์์ ํ ์ ์๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: SQL - GROUP BY (0) | 2020.10.28 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: SQL - String, Date (0) | 2020.10.28 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ค ์๋ ๋ฐฉ๋ฒ (2) | 2020.10.26 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2020.10.26 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2020.10.25 |