๐Ÿ’พ DataBase

[MySQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์žˆ์—ˆ๋Š”๋ฐ์š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค(Lv. 3)

mxnxeonx 2023. 2. 6. 13:02
728x90
728x90

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์žˆ์—ˆ๋Š”๋ฐ์š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค

๊ด€๋ฆฌ์ž์˜ ์‹ค์ˆ˜๋กœ ์ผ๋ถ€ ๋™๋ฌผ์˜ ์ž…์–‘์ผ์ด ์ž˜๋ชป ์ž…๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ˜ธ ์‹œ์ž‘์ผ๋ณด๋‹ค ์ž…์–‘์ผ์ด ๋” ๋น ๋ฅธ ๋™๋ฌผ์˜ ์•„์ด๋””์™€ ์ด๋ฆ„์„ ์กฐํšŒํ•˜๋Š” 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

 


 

์ฝ”๋”ฉ ๋ฌธ์ œ์—์„œ๋Š” ํ•ต์‹ฌ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ๋ฐ, SQL์˜ ๊ฒฝ์šฐ ๋ณดํ†ต ํ•œ ๋ฌธ์žฅ์— ๋‹ด๊ฒจ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

๋ณธ ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” ์ง€๋ฌธ์€, '๋ณดํ˜ธ ์‹œ์ž‘์ผ๋ณด๋‹ค ์ž…์–‘์ผ์ด ๋” ๋น ๋ฅธ ๋™๋ฌผ์˜ ์•„์ด๋””์™€ ์ด๋ฆ„'์ด๋‹ค.

๋‘ ๋‚ ์งœ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•ด์•ผ ํ•˜๋ฏ€๋กœ, JOIN๊ณผ ๋น„๊ต ์—ฐ์‚ฐ์„ ํ•จ๊ป˜ ์‹คํ–‰ํ•ด์•ผ ํ•จ์„ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋จผ์ € ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ํ…Œ์ด๋ธ”(IN)๊ณผ ๋ณดํ˜ธ์†Œ์—์„œ ์ž…์–‘ ๋ณด๋‚ธ ๋™๋ฌผ ํ…Œ์ด๋ธ”(OUT)์„ JOINํ•œ๋‹ค.

์ด์ „ ๋ฌธ์ œ์™€๋Š” ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋œ(NULL) ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์ผ๋ฐ˜ JOIN์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

[MySQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐ(Lv. 3)

ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””

idox.tistory.com

 

์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ „์ฒด ์กฐ๊ฑด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • IN/OUT ํ…Œ์ด๋ธ”์„ JOIN, (๊ฐ ๋™๋ฌผ์„ ๊ธฐ์ค€์œผ๋กœ ์œ ์ถœ์ž… ๋‚ ์งœ๋ฅผ ์•Œ์•„์•ผํ•˜๋ฏ€๋กœ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ)
  • IN/OUT DATETIME์„ ๋น„๊ต (๋ณดํ˜ธ ์‹œ์ž‘์ผ[IN]๋ณด๋‹ค ์ž…์–‘์ผ[OUT]์ด ๋” ๋น ๋ฅธ ๋™๋ฌผ์„ ์ฐพ๊ธฐ)
  • ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ID์™€ NAME
  • IN DATETIME์„ ๊ธฐ์ค€์œผ๋กœ ORDER BY

SQL ๋ฌธ์ œ๋Š” ์œ„์ฒ˜๋Ÿผ ์กฐ๊ฑด์„ ํ•˜๋‚˜์”ฉ ์ฒดํฌํ•˜๋ฉด์„œ ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ์น˜ํ™˜ํ•˜๋“ฏ์ด ํ’€๋ฉด ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

-- ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
728x90
320x100