[MySQL] ํ๋ก๊ทธ๋๋จธ์ค - ๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ(Lv. 4)
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ
๋ณดํธ์์์ ์ค์ฑํ ์์ ์ ๊ฑฐ์น ๋๋ฌผ ์ ๋ณด๋ฅผ ์์๋ณด๋ ค ํฉ๋๋ค. ๋ณดํธ์์ ๋ค์ด์ฌ ๋น์์๋ ์ค์ฑํ1๋์ง ์์์ง๋ง, ๋ณดํธ์๋ฅผ ๋๊ฐ ๋น์์๋ ์ค์ฑํ๋ ๋๋ฌผ์ ์์ด๋์ ์๋ฌผ ์ข , ์ด๋ฆ์ ์กฐํํ๋ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ 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 |
์๋ฅผ ๋ค์ด, ANIMAL_INS ํ ์ด๋ธ๊ณผ ANIMAL_OUTS ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด
ANIMAL_INS
ANIMAL_ID | ANIMAL_TYPE | DATETIME | INTAKE_CONDITION | NAME | SEX_UPON_INTAKE |
A367438 | Dog | 2015-09-10 16:01:00 | Normal | Cookie | Spayed Female |
A382192 | Dog | 2015-03-13 13:14:00 | Normal | Maxwell 2 | Intact Male |
A405494 | Dog | 2014-05-16 14:17:00 | Normal | Kaila | Spayed Female |
A410330 | Dog | 2016-09-11 14:09:00 | Sick | Chewy | Intact Female |
ANIMAL_OUTS
ANIMAL_ID | ANIMAL_TYPE | DATETIME | NAME | SEX_UPON_OUTCOME |
A367438 | Dog | 2015-09-12 13:30:00 | Cookie | Spayed Female |
A382192 | Dog | 2015-03-16 13:46:00 | Maxwell 2 | Neutered Male |
A405494 | Dog | 2014-05-20 11:44:00 | Kaila | Spayed Female |
A410330 | Dog | 2016-09-13 13:46:00 | Chewy | Spayed Female |
- Cookie๋ ๋ณดํธ์์ ๋ค์ด์ฌ ๋น์์ ์ด๋ฏธ ์ค์ฑํ๋์ด์์์ต๋๋ค.
- Maxwell 2๋ ๋ณดํธ์์ ๋ค์ด์จ ํ ์ค์ฑํ๋์์ต๋๋ค.
- Kaila๋ ๋ณดํธ์์ ๋ค์ด์ฌ ๋น์์ ์ด๋ฏธ ์ค์ฑํ๋์ด์์์ต๋๋ค.
- Chewy๋ ๋ณดํธ์์ ๋ค์ด์จ ํ ์ค์ฑํ๋์์ต๋๋ค.
โป ์ค์ฑํ๋ฅผ ๊ฑฐ์น์ง ์์ ๋๋ฌผ์ ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ์ Intact, ์ค์ฑํ๋ฅผ ๊ฑฐ์น ๋๋ฌผ์ Spayed ๋๋ Neutered๋ผ๊ณ ํ์๋์ด์์ต๋๋ค.
๋ฌธ์ ํด์ค
๋ณดํธ์์ ๋ค์ด์ฌ ๋น์์๋ ์ค์ฑํ๋์ง ์์์ง๋ง, ๋ณดํธ์๋ฅผ ๋๊ฐ ๋น์์๋ ์ค์ฑํ๋ ๋๋ฌผ์ ์กฐํํด์ผ ํ๋ค.
์ฆ, ๋ณดํธ์์์ ์ค์ฑํ๋ฅผ ๊ฑฐ์น ๋๋ฌผ์ ์ ๋ณด๋ง ์กฐํํด์ผ ํ๋ฏ๋ก ๋ ํ ์ด๋ธ์ JOINํ์ฌ ๋ฌธ์ ๋ฅผ ํผ๋ค.
- ANIMAL_INS, ANIMAL_OUTS ํ ์ด๋ธ ์กฐ์ธ
- ANIMAL_INS ํ ์ด๋ธ์ SEX_UPON_INTAKE ์ปฌ๋ผ์ Intact ๋ฌธ์์ด์ ํฌํจํด์ผ ํจ (์ค์ฑํX)
- ANIMAL_OUTS ํ ์ด๋ธ์ SEX_UPON_OUTCOME ์ปฌ๋ผ์ Spayed ๋๋ Neutered ๋ฌธ์์ด์ ํฌํจํด์ผ ํจ (์ค์ฑํO)
- ANIMAL_ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
JOIN, LIKE๋ฅผ ํ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋์ง์ ๋ํ ๋ฅ๋ ฅ์ ํ๊ฐํ๋ ๋ฌธ์ ๋ค.
-- ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE '%Intact%'
AND (OUTS.SEX_UPON_OUTCOME LIKE '%Spayed%' OR OUTS.SEX_UPON_OUTCOME LIKE '%Neutered%')
ORDER BY INS.ANIMAL_ID