[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv3. ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋ณดํ˜ธํ•œ ๋™๋ฌผ(1) [JOIN]

2022. 9. 26. 16:03ใ†์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_2022

728x90

 

๋ฌธ์ œ ์„ค๋ช…

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

์•„์ง ์ž…์–‘์„ ๋ชป ๊ฐ„ ๋™๋ฌผ ์ค‘, ๊ฐ€์žฅ ์˜ค๋ž˜ ๋ณดํ˜ธ์†Œ์— ์žˆ์—ˆ๋˜ ๋™๋ฌผ 3๋งˆ๋ฆฌ์˜ ์ด๋ฆ„๊ณผ ๋ณดํ˜ธ ์‹œ์ž‘์ผ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๋ณดํ˜ธ ์‹œ์ž‘์ผ ์ˆœ์œผ๋กœ ์กฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ

์˜ˆ๋ฅผ ๋“ค์–ด, ANIMAL_INS ํ…Œ์ด๋ธ”๊ณผ ANIMAL_OUTS ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

ANIMAL_INS

ANIMAL_ID         ANIMAL_TYPE         DATETIME                       INTAKE_CONDITION NAME     SEX_UPON_INTAKE
A354597 Cat 2014-05-02 12:16:00 Normal Ariel Spayed Female
A373687 Dog 2014-03-20 12:31:00 Normal Rosie Spayed Female
A412697 Dog 2016-01-03 16:25:00 Normal Jackie Neutered Male
A413789 Dog 2016-04-19 13:28:00 Normal Benji Spayed Female
A414198 Dog 2015-01-29 15:01:00 Normal Shelly Spayed Female
A368930 Dog 2014-06-08 13:20:00 Normal   Spayed Female

 

ANIMAL_OUTS

ANIMAL_ID              ANIMAL_TYPE      DATETIME                                    NAME             SEX_UPON_OUTCOME
A354597 Cat 2014-05-02 12:16:00 Ariel Spayed Female
A373687 Dog 2014-03-20 12:31:00 Rosie Spayed Female
A368930 Dog 2014-06-13 15:52:00   Spayed Female

SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

NAME                                           DATETIME
Shelly 2015-01-29 15:01:00
Jackie 2016-01-03 16:25:00
Benji 2016-04-19 13:28:00

โ€ป ์ž…์–‘์„ ๊ฐ€์ง€ ๋ชปํ•œ ๋™๋ฌผ์ด 3๋งˆ๋ฆฌ ์ด์ƒ์ธ ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

 

 

๋‚˜์˜ ํ’€์ด [MySQL] 

SELECT A.NAME, A.DATETIME 
FROM ANIMAL_INS A LEFT OUTER JOIN ANIMAL_OUTS B 
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL 
ORDER BY A.DATETIME LIMIT 3;

-> ๋ ˆ๋ฒจ3์ด ๋˜๋‹ˆ๊นŒ JOIN ๋ฌธ์ œ๋„ ๋‚˜์˜จ๋‹ค..! ใ…Žใ…Ž

์ผ๋‹จ ์ด ๋ฌธ์ œ๋Š” ANIMAL_INS๊ณผ ANIMAL_OUTS ํ…Œ์ด๋ธ”์„ ์กฐ์ธ์„ ํ•˜๋Š”๋ฐ ์ด๋•Œ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์—์„œ ์ž…์–‘๋˜์ง€ ๋ชปํ•œ ๋™๋ฌผ๋“ค์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ANIMAL_INS ์™€ ANIMAL_OUTS๋ฅผ LEFT OUTER JOIN ํ•ด์•ผ ํ•œ๋‹ค. 

์ด๋•Œ ์กฐ๊ฑด์€ ANIMAL_ID์™€ B.ANIMAL_ID๊ฐ€ ๊ฐ™์„ ๋•Œ ์กฐ์ธ์„ ํ•˜๋Š”๋ฐ ์ž…์–‘์„ ๊ฐ€์ง€ ๋ชปํ•œ ๋™๋ฌผ์ผ ๊ฒฝ์šฐ์—๋Š”  B.ANIMAL_ID๊ฐ€ NULL ๊ฐ’์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ JOIN์„ ํ•˜๊ณ  WHERE ์กฐ๊ฑด์ ˆ์— B.ANIMAL_ID IS NULL์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , 

๊ทธ ๋‹ค์Œ ๋ณดํ˜ธ ์‹œ์ž‘์ผ์„ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ ฌํ•˜๋ผํ•ด์„œ A.DATETIME์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋ž˜ ์ž…์–‘๋˜์ง€ ๋ชปํ•œ ๋™๋ฌผ 3๋งˆ๋ฆฌ๋งŒ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— LIMIT 3์„ ํ•ด์คฌ๋‹ค..! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90