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

쥬쥬스·2023년 11월 20일
0

SQL

목록 보기
60/67
post-thumbnail

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

💡 조건

  • 세개의 테이블 합치기
  • 세개의 테이블에서 필요한 항목 조회
  • 진료예약일시 기준 오름차순

sql 코드

SELECT appointment.apnt_no, patient.pt_name, patient.pt_no, doctor.mcdp_cd, doctor.dr_name, appointment.apnt_ymd
FROM doctor join
    (SELECT apnt_no, pt_no, mcdp_cd, mddr_id, apnt_ymd
    FROM appointment
    WHERE apnt_ymd like "%2022-04-13%" and apnt_cncl_yn = "N" and mcdp_cd = "CS")
    as appointment on doctor.dr_id = appointment.mddr_id
JOIN patient on patient.pt_no = appointment.pt_no
ORDER BY appointment.apnt_ymd

  1. 진료 예약 내역 조회
    아래 세가지 조건을 다 만족시켜주도록 where문 적어주고, 조회할 때 필요한 칼럼들을 select문으로 가져온다.
  • 2022년 4월 13일 예약
  • 취소되지 않은 예약
  • 흉부외과(CS) 진료 예약
SELECT apnt_no, pt_no, mcdp_cd, mddr_id, apnt_ymd
FROM appointment
WHERE apnt_ymd like "%2022-04-13%" and apnt_cncl_yn = "N" and mcdp_cd = "CS"
  1. 의사, 환자 아이디로 테이블 합치기
    각각의 테이블에서 조회해야하는 것들이 있으니 각 테이블의 외래키로 테이블들을 join해준다.
    (++ 추가로, MySQL에서 서브쿼리 합쳐줄 때는 alias를 설정해주어야한다. 아니면 오류남!)
FROM doctor join
    (SELECT apnt_no, pt_no, mcdp_cd, mddr_id, apnt_ymd
    FROM appointment
    WHERE apnt_ymd like "%2022-04-13%" and apnt_cncl_yn = "N" and mcdp_cd = "CS")
    as appointment on doctor.dr_id = appointment.mddr_id
JOIN patient on patient.pt_no = appointment.pt_no
  1. select문 조회
    문제에서 조회하라고 한 것들을 하나씩 조회해준다. 이때 어떤 테이블의 어떤 칼럼에서 가져올건지 명확하게 명시해준다.
SELECT appointment.apnt_no, patient.pt_name, patient.pt_no, doctor.mcdp_cd, doctor.dr_name, appointment.apnt_ymd
  1. 정렬기준
ORDER BY appointment.apnt_ymd
profile
느려도... 꾸준히.....🐌

0개의 댓글