ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: SQL - JOIN
dirmathfl 2020. 10. 28. 18:36๋ฌธ์
๋ฌธ์ ํ์ด
๊ฐ ๋ฌธ์ ์์๋ `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 |