[ํ๋ก๊ทธ๋๋จธ์ค] ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(2)
์ ์์ ๊ฐ ๋๋ฌผ ์ค, ๋ณดํธ ๊ธฐ๊ฐ์ด ๊ฐ์ฅ ๊ธธ์๋ ๋๋ฌผ ๋ ๋ง๋ฆฌ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ 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 |
์ด์ ๋ฌธ์ ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)์, '์ ์์ ๋ชป ๊ฐ ๋๋ฌผ'์ด ๋์์ด์๋ค๋ฉด ๋ณธ ๋ฌธ์ ๋ '์ ์์ ๊ฐ ๋๋ฌผ'์ ๋์์ผ๋ก ํ๋ค.
๋๋ฌธ์ (1)์์๋ OUT ํ ์ด๋ธ์ DATETIME์ด NULL์ธ ๋๋ฌผ์ ์ฐพ์์ผ ํ๋๋ฐ,
(2)์์๋ IN/OUT ํ ์ด๋ธ์ DATETIME์ ๋ชจ๋ NOT NULL์ด๋ ์ถ๊ฐ๋ก '๋ณดํธ ๊ธฐ๊ฐ์ด ๊ฐ์ฅ ๊ธธ์๋' ๋๋ฌผ์ ์ฐพ์์ผ ํ๋ค.
์ด๋ฅผ ์ฟผ๋ฆฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- IN/OUT ํ ์ด๋ธ์ JOINํ๋ค. ์ด๋ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฉฐ, ์์ชฝ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ํ์ํ๋ฏ๋ก ์ผ๋ฐ JOIN์ ์ฌ์ฉํ๋ค.
-- IN/OUT ํ
์ด๋ธ JOIN
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID
- ๋ณดํธ ๊ธฐ๊ฐ์ IN DATETIME(๋ณดํธ ์์์ผ)๊ณผ OUT DATETIME(์ ์์ผ)์ ์ฐจ์ด๋ก ๊ตฌํ ์ ์๋ค.
- ๋ณดํธ ๊ธฐ๊ฐ์์ผ๋ก ์ ๋ ฌํ ํ, ์์ 2๋ง๋ฆฌ๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก LIMIT ์กฐ๊ฑด์ ์์ฑํด์ฃผ๋ฉด ์๋ฃ.
-- ๋ณดํธ ๊ธฐ๊ฐ์ด ๊ฐ์ฅ ๊ธด ๋๋ฌผ 2๋ง๋ฆฌ
ORDER BY INS.DATETIME - OUTS.DATETIME
LIMIT 2
์ ์ฒด ์ฟผ๋ฆฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ด์ ๋ฌธ์ ๋ค๊ณผ ์ ์ฌํ์ง๋ง JOIN์ ์กฐ๊ฑด๊ณผ ์ ๋ ฌ ๋ฑ ๋ํ ์ผํ ์์์์ ์ฐจ์ด๊ฐ ์๋ค.
-- ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID
ORDER BY INS.DATETIME - OUTS.DATETIME
LIMIT 2
[ํ๋ก๊ทธ๋๋จธ์ค] 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
[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)(Lv. 3)
[ํ๋ก๊ทธ๋๋จธ์ค] ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1) ์์ง ์ ์์ ๋ชป ๊ฐ ๋๋ฌผ ์ค, ๊ฐ์ฅ ์ค๋ ๋ณดํธ์์ ์์๋ ๋๋ฌผ 3๋ง๋ฆฌ์ ์ด๋ฆ๊ณผ ๋ณดํธ ์์์ผ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ
idox.tistory.com
'๐พ DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle] Linux CentOS 8 ์๋ฒ์ Oracle DB ์ค์นํ๊ธฐ (0) | 2023.02.08 |
---|---|
[DBeaver] DBeaver ์ค์น์ ORACLE DB ์ ์ํ๊ธฐ (0) | 2023.02.08 |
[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)(Lv. 3) (0) | 2023.02.06 |
[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์์๋๋ฐ์ ์์์ต๋๋ค(Lv. 3) (0) | 2023.02.06 |
[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ(Lv. 3) (0) | 2023.02.06 |