250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

데이터 놀이터

String, Date - 취소되지 않은 진료 예약 조회하기 본문

SQL

String, Date - 취소되지 않은 진료 예약 조회하기

jjjk84 2023. 8. 24. 23:02
728x90

1. 문제

 

PATIENTDOCTOR 그리고 APPOINTMENT 테이블에서

2022년 4월 13일

취소되지 않은

흉부외과(CS)

진료 예약 내역을 조회하는 SQL문을 작성해주세요.

진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요.

결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/132204

 

2. 문제 조건

 

  1. PATIENTDOCTOR 그리고 APPOINTMENT 테이블 -> 다중 JOIN
  2. 2022년 4월 13일, 취소되지 않은, 흉부외과(CS) -> WHERE 조건
  3. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력 -> SELECT
  4. 진료예약일시를 기준으로 오름차순 정렬 -> ORDER BY

 

3. 코드 작성

 

/*
1. 2022년 4월 13일
2. 취소되지 않은
3. 흉부외과(CS) 진료 예약 내역을 조회(진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력)
4. 진료예약일시를 기준으로 오름차순 정렬
*/
SELECT A.APNT_NO
     , P.PT_NAME
     , P.PT_NO
     , A.MCDP_CD
     , D.DR_NAME
     , A.APNT_YMD
FROM APPOINTMENT AS A
    JOIN PATIENT AS P ON A.PT_NO = P.PT_NO
    JOIN DOCTOR AS D ON A.MDDR_ID = D.DR_ID
WHERE DATE_FORMAT(A.APNT_YMD, '%Y-%m-%d') = '2022-04-13'
    AND A.APNT_CNCL_YN = 'N'
    AND A.MCDP_CD = 'CS'
ORDER BY A.APNT_YMD;

 

4. 회고

 

  • 코드가 어려운 문제는 아니었지만, 테이블 간 관계를 잘 파악해야하는 문제였다.
  • 이 문제는 APPOINTMENT가 중심이 되고, 나머지 테이블을 JOIN 하는 문제였다. 이 구조를 처음에 파악하려고 하지 않았다면, 힘든 풀이가 됐을 것 같다. 
  • JOIN을 여러개 하는것이 필요한 경우, JOIN을 반복해서 써넣으면 된다.
728x90