본문 바로가기

프로그래머스(Oracle)

[프로그래머스 (Oracle)] 취소되지 않은 진료 예약 조회하기

728x90

힌트

1. 테이블 간의 조인

  • PATIENT, APPOINTMENT, DOCTOR 테이블을 이용해 환자, 예약, 의사 정보를 결합해 조회합니다.
  • 환자와 예약 정보는 PT_NO를 기준으로 조인하고, 예약 정보와 의사는 MDDR_ID(의사 ID)를 기준으로 조인합니다.

2. 예약 조건

  • 예약 날짜는 '2022-04-13'로 지정되어 있으며, 이 날짜에 해당하는 예약을 찾습니다.
  • 진료과목은 'CS'(예: 외과)로 필터링하며, 해당 과목에 해당하는 의사를 선택합니다.
  • 예약 취소 여부가 'N'인 예약만 포함해, 취소되지 않은 예약만 조회합니다.

3. 정렬

  • 결과는 예약 날짜를 기준으로 오름차순으로 정렬됩니다.

 


정답은 더보기 클릭

더보기
더보기
SELECT A.APNT_NO, P.PT_NAME, A.PT_NO, A.MCDP_CD, D.DR_NAME, A.APNT_YMD
  -- PATIENT(환자 테이블), APPOINTMENT(예약 테이블), DOCTOR(의사 테이블)을 사용하여 환자 예약 정보를 조회합니다.
  FROM PATIENT P
   JOIN APPOINTMENT A
   -- 환자 번호(PT_NO)를 기준으로 환자와 예약 테이블을 조인합니다.
   ON P.PT_NO = A.PT_NO
   JOIN DOCTOR D
   -- 예약 테이블에서 의사 ID(MDDR_ID)를 기준으로 의사 테이블과 조인합니다.
   ON D.DR_ID = A.MDDR_ID
  -- 예약 날짜가 2022년 4월 13일이고
  WHERE TO_CHAR(A.APNT_YMD, 'YYYYMMDD') = '20220413'
   -- 진료과목 코드(MCDP_CD)가 'CS'(예: 외과)이며,
   AND D.MCDP_CD = 'CS'
   -- 예약 취소 여부(APNT_CNCL_YN)가 'N'인 예약을 조회합니다.
   AND APNT_CNCL_YN = 'N'
  -- 예약 일자를 기준으로 오름차순 정렬합니다.
  ORDER BY APNT_YMD
728x90