데이터 놀이터
String, Date - 취소되지 않은 진료 예약 조회하기 본문
728x90
1. 문제
PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서
2022년 4월 13일
취소되지 않은
흉부외과(CS)
진료 예약 내역을 조회하는 SQL문을 작성해주세요.
진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요.
결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/132204
2. 문제 조건
- PATIENT, DOCTOR 그리고 APPOINTMENT 테이블 -> 다중 JOIN
- 2022년 4월 13일, 취소되지 않은, 흉부외과(CS) -> WHERE 조건
- 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력 -> SELECT
- 진료예약일시를 기준으로 오름차순 정렬 -> 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
'SQL' 카테고리의 다른 글
String, Date - 조건에 맞는 사용자 정보 조회하기 (0) | 2023.08.28 |
---|---|
String, Date - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2023.08.26 |
String, Date - 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.08.24 |
String, Date - 카테고리 별 상품 개수 구하기 (0) | 2023.08.22 |
String, Date - 자동차 평균 대여 기간 구하기 (0) | 2023.08.22 |