카테고리 없음

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

킴도비 2023. 2. 10. 16:26

이 문제는 출력해야하는 조건이 많고 테이블이 3개여서 복잡했던 문제였다 😂

 

📔 문제

PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📖 테이블

차례로 PATIENT, DOCTOR, APPOINTMENT 테이블이다.

 

🔍 조건들

  • 출력 : 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시
  • 조건 : 2022년 4월 13일, 취소되지 않은, 흉부외과(CS)
  • 정렬 : 진료예약 일시(오름차순)

 밑에는 한눈에 보기 쉽게 그린 그림이다!

 

여기서 했던 잘못했던 생각

 처음에는 조건들 대로 다 넣었는데 엮지를 않았더니 환자 - 모든 의사 - 모든 날짜 이렇게 연결이 되어서 나왔다.(당연했음) 그래서 환자번호로 묶었더니 여전희 모든 의사가 나왔다.. 그래서 추가로 의사 ID들끼리 묶어주니 해결되었다! 의사 ID라고 한글로 적혀져 있는데 실제로는 영어로는 다르게 적혀 있었기 때문에 잘 살펴보고 풀어야 하는 문제였다 😅

 

✅ 결과 소스 코드

-- 코드를 입력하세요
-- 출력 : 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시
SELECT APNT_NO, PT_NAME, A.PT_NO, A.MCDP_CD, DR_NAME, APNT_YMD
FROM PATIENT P, DOCTOR D, APPOINTMENT A
WHERE DATE_FORMAT(APNT_YMD, '%Y-%m-%d') = '2022-04-13' 
    AND APNT_CNCL_YN = 'N' 
    AND A.MCDP_CD = 'CS'
    AND P.PT_NO = A.PT_NO AND DR_ID = MDDR_ID 
ORDER BY APNT_YMD ASC;