๋ฌธ์ œ

๐Ÿ“Œ MySQL ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

PATIENT, DOCTOR ๊ทธ๋ฆฌ๊ณ  APPOINTMENT ํ…Œ์ด๋ธ”์—์„œ 2022๋…„ 4์›” 13์ผ ์ทจ์†Œ๋˜์ง€ ์•Š์€ ํ‰๋ถ€์™ธ๊ณผ(CS) ์ง„๋ฃŒ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ง„๋ฃŒ์˜ˆ์•ฝ๋ฒˆํ˜ธ, ํ™˜์ž์ด๋ฆ„, ํ™˜์ž๋ฒˆํ˜ธ, ์ง„๋ฃŒ๊ณผ์ฝ”๋“œ, ์˜์‚ฌ์ด๋ฆ„, ์ง„๋ฃŒ์˜ˆ์•ฝ์ผ์‹œ ํ•ญ๋ชฉ์ด ์ถœ๋ ฅ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ์ง„๋ฃŒ์˜ˆ์•ฝ์ผ์‹œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๐Ÿ“Œ ํ…Œ์ด๋ธ” :

๋‹ค์Œ์€ ํ™˜์ž ์ •๋ณด๋ฅผ ๋‹ด์€ PATIENT ํ…Œ์ด๋ธ”๊ณผ ์˜์‚ฌ ์ •๋ณด๋ฅผ ๋‹ด์€ DOCTOR ํ…Œ์ด๋ธ”, ๊ทธ๋ฆฌ๊ณ  ์ง„๋ฃŒ ์˜ˆ์•ฝ๋ชฉ๋ก์„ ๋‹ด์€ APPOINTMENT์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. PATIENT ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ PT_NO, PT_NAME, GEND_CD, AGE, TLNO๋Š” ๊ฐ๊ฐ ํ™˜์ž๋ฒˆํ˜ธ, ํ™˜์ž์ด๋ฆ„, ์„ฑ๋ณ„์ฝ”๋“œ, ๋‚˜์ด, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

PT_NO VARCHAR(N) FALSE
PT_NAME VARCHAR(N) FALSE
GEND_CD VARCHAR(N) FALSE
AGE INTEGER FALSE
TLNO VARCHAR(N) TRUE

DOCTOR ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO๋Š” ๊ฐ๊ฐ ์˜์‚ฌ์ด๋ฆ„, ์˜์‚ฌID, ๋ฉดํ—ˆ๋ฒˆํ˜ธ, ๊ณ ์šฉ์ผ์ž, ์ง„๋ฃŒ๊ณผ์ฝ”๋“œ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

DR_NAME VARCHAR(N) FALSE
DR_ID VARCHAR(N) FALSE
LCNS_NO VARCHAR(N) FALSE
HIRE_YMD DATE FALSE
MCDP_CD VARCHAR(N) TRUE
TLNO VARCHAR(N) TRUE

APPOINTMENT ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ APNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD๋Š” ๊ฐ๊ฐ ์ง„๋ฃŒ ์˜ˆ์•ฝ์ผ์‹œ, ์ง„๋ฃŒ์˜ˆ์•ฝ๋ฒˆํ˜ธ, ํ™˜์ž๋ฒˆํ˜ธ, ์ง„๋ฃŒ๊ณผ์ฝ”๋“œ, ์˜์‚ฌID, ์˜ˆ์•ฝ์ทจ์†Œ์—ฌ๋ถ€, ์˜ˆ์•ฝ์ทจ์†Œ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

APNT_YMD TIMESTAMP FALSE
APNT_NO INTEGER FALSE
PT_NO VARCHAR(N) FALSE
MCDP_CD VARCHAR(N) FALSE
MDDR_ID VARCHAR(N) FALSE
APNT_CNCL_YN VARCHAR(N) TRUE
APNT_CNCL_YMD DATE TRUE

 


ํ’€์ด

์ถ”์ธก) 

์˜ˆ์•ฝ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ์˜์‚ฌ๋“  ํ™˜์ž๋“  INNER JOINํ•ด์ฃผ๋ฉด ๋ ๋“ฏํ•˜๋‹ค.

์ผ๋‹จ ์˜ˆ์•ฝ์—์„œ ํ•ด๋‹น ์กฐ๊ฑด์ด๋ž‘ ์•ˆ๋งž๋Š”๊ฑฐ ๋จผ์ € row์ˆ˜ ๋นผ์ฃผ๊ณ  innerํ•˜๋Š” ๊ฒŒ ๋” ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์„œ ์˜ˆ์•ฝ๋งŒ ์กฐ๊ฑด ์ถœ๋ ฅํ•˜๊ณ 

ํ•ด๋‹นํ•˜๋Š” ์˜์‚ฌ, ํ™˜์ž ๋งค์นญ๋˜๊ฒŒ ๊ฐ๊ฐ inner join ํ•ด์ฃผ๋ฉด ๋ ๋“ฏํ•˜๋‹ค.

 

์ฟผ๋ฆฌ) 

* 1์ฐจ) ์„ฑ๊ณต

SELECT AP.APNT_NO, AP.PT_NAME, AP.PT_NO, AP.MCDP_CD, D.DR_NAME, AP.APNT_YMD
FROM 
    (SELECT A.APNT_NO, P.PT_NAME, P.PT_NO, A.MCDP_CD, A.MDDR_ID, A.APNT_YMD
     FROM (SELECT APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_YMD 
            FROM APPOINTMENT
            WHERE APNT_YMD LIKE '2022-04-13%' 
                AND MCDP_CD = 'CS' 
                AND APNT_CNCL_YN != 'Y'
         ) AS A # ํ•„์š”์—†๋Š” ์˜ˆ์•ฝ ๋จผ์ € ํ•„ํ„ฐ๋ง
    INNER JOIN PATIENT AS P
    ON A.PT_NO = P.PT_NO) AS AP
INNER JOIN DOCTOR AS D
ON AP.MDDR_ID = D.DR_ID
ORDER BY

 

* 2์ฐจ) ์„ฑ๊ณต: ์œ„์— ๊บผ๊ฐ€ ๋„ˆ๋ฌด ์ง€์ €๋ถ„ํ•ด์„œ ์ข€ ์ •๋ฆฌ

SELECT A.APNT_NO, P.PT_NAME, P.PT_NO, A.MCDP_CD, D.DR_NAME, A.APNT_YMD
FROM (SELECT APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_YMD 
      FROM APPOINTMENT
      WHERE APNT_YMD LIKE '2022-04-13%' 
         AND MCDP_CD = 'CS' 
         AND APNT_CNCL_YN != 'Y'
      ) AS A 					 # ํ•„์š”์—†๋Š” ์˜ˆ์•ฝ ๋จผ์ € ํ•„ํ„ฐ๋ง
INNER JOIN PATIENT AS P ON A.PT_NO = P.PT_NO
INNER JOIN DOCTOR AS D ON A.MDDR_ID = D.DR_ID
ORDER BY A.APNT_YMD ASC

 

๋ฆฌ๋ทฐ) 

์ฟผ๋ฆฌ๋„ ์ข€๋” ๊น”๋”ํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฒ•์„ ๋งŽ์ด ์ƒ๊ฐํ•ด๋ด์•ผํ•  ๊ฑฐ ๊ฐ™๋‹ค 

1์ฐจ ์ฟผ๋ฆฌ ๋„ˆ๋ฌด ์ง€์ €๋ถ„ํ–ˆ์Œ ใ…Žใ…Ž..

+ Recent posts