[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)(Lv. 3)
[ํ๋ก๊ทธ๋๋จธ์ค] ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)
์์ง ์ ์์ ๋ชป ๊ฐ ๋๋ฌผ ์ค, ๊ฐ์ฅ ์ค๋ ๋ณดํธ์์ ์์๋ ๋๋ฌผ 3๋ง๋ฆฌ์ ์ด๋ฆ๊ณผ ๋ณดํธ ์์์ผ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ ์์ผ๋ก ์กฐํํด์ผ ํฉ๋๋ค.
ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ๋ณดํธ ์์์ผ, ๋ณดํธ ์์ ์ ์ํ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
ANIMAL_OUTS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์์ ์ ์ ๋ณด๋ธ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ์ ์์ผ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ์ ANIMAL_ID๋ ANIMAL_INS์ ANIMAL_ID์ ์ธ๋ ํค์ ๋๋ค.
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
์์ง ์ ์์ ๋ชป ๊ฐ ๋๋ฌผ์ด๋ผ๋ฉด, OUT ํ ์ด๋ธ์ DATETIME ๊ฐ์ด NULL๋ก ๋น์ด์์ด์ผ ํ๋ค.
์ด์ ๋ฌธ์ ๋ค๊ณผ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ผ๋ก IN, OUT ํ ์ด๋ธ์ JOINํด์ผ ํ๋๋ฐ, OUT ํ ์ด๋ธ์ NULL์ด ํฌํจ์ด๋ฏ๋ก LEFT JOIN์ ์ฌ์ฉํ๋ค.
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID
๋ณธ ๋ฌธ์ ์ ์ ์ฒด ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ง ์ ์์ ๊ฐ์ง ๋ชปํ ๋๋ฌผ → WHERE OUTS.DATETIME IS NULL
- ๊ฐ์ฅ ๋ณดํธ์์ ์ค๋ ์์๋ ๋๋ฌผ 3๋ง๋ฆฌ → LIMIT 3 (๋ณดํธ ์์์ผ ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ผ๋ฏ๋ก ์์ 3๊ฐ๋ง ์ถ๋ ฅํ๋ฉด ๋จ)
- ์ด๋ฆ๊ณผ ๋ณดํธ ์์์ผ์ ์กฐํ → SELECT INS.NAME, INS.DATETIME
- ๋ณดํธ ์์์ผ ์์ผ๋ก ์กฐํ → ORDER BY INS.DATETIME
-- ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID
WHERE OUTS.DATETIME IS NULL
ORDER BY INS.DATETIME
LIMIT 3
[ํ๋ก๊ทธ๋๋จธ์ค] ANIMAL_INS, ANIMAL_OUTS ํ ์ด๋ธ ๋ฌธ์ ๋๋ณด๊ธฐ
[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ(Lv. 3)
ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋
idox.tistory.com
[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์์๋๋ฐ์ ์์์ต๋๋ค(Lv. 3)
[ํ๋ก๊ทธ๋๋จธ์ค] ์์๋๋ฐ์ ์์์ต๋๋ค ๊ด๋ฆฌ์์ ์ค์๋ก ์ผ๋ถ ๋๋ฌผ์ ์ ์์ผ์ด ์๋ชป ์ ๋ ฅ๋์์ต๋๋ค. ๋ณดํธ ์์์ผ๋ณด๋ค ์ ์์ผ์ด ๋ ๋น ๋ฅธ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ
idox.tistory.com