728x90
❓ Question
❗ Answer
# JOIN KEY : p.pt_no = a.pt_no / a.mddr_id = d.dr_id
# 문제 조건
# 1) 2022-04-13 : a.apnt_ymd LIKE '2022-04-13%'
# 2) 취소되지않은 : a.apnt_cncl_yn = 'N'
# 3) 흉부외과(CS) : a.mcdp_cd = 'CS'
# 4) 출력 : a.apnt_no 진료예약번호, p.pt_name 환자이름, p.pt_no 환자번호,
# a.mcdp_cd 진료과코드, d.dr_name 의사이름, a.apnt_ymd 진료예약일시
SELECT ad.apnt_no 진료예약번호, p.pt_name 환자이름, p.pt_no 환자번호,
ad.mcdp_cd 진료과코드, ad.dr_name 의사이름, ad.apnt_ymd 진료예약일시
FROM patient p
INNER JOIN (SELECT a.apnt_ymd, a.apnt_no, a.pt_no, a.mcdp_cd,
a.apnt_cncl_yn, a.apnt_cncl_ymd, d.dr_name
FROM appointment a
INNER JOIN doctor d
ON a.mddr_id = d.dr_id) ad
ON p.pt_no = ad.pt_no
WHERE ad.apnt_ymd LIKE '2022-04-13%' AND
ad.apnt_cncl_yn = 'N' AND
ad.mcdp_cd = 'CS'
ORDER BY 진료예약일시;
📌 Discussion
- 조건이 많은 경우에는 정리를 해놓고 문제를 푸는 것이 수월
- sub-query에서 두 테이블을 우선 join 후 main-query에서 한번 더 join을 실행
- sub-query에서는 모두 불러온 후 WHERE절에서 모든 필터링 진행
'SQL 문제풀이' 카테고리의 다른 글
[프로그래머스 SQL] LV.3 헤비 유저가 소유한 장소 (0) | 2023.08.06 |
---|---|
[프로그래머스 SQL] LV.2 자동차 평균 대여 기간 구하기 (0) | 2023.08.06 |
[프로그래머스 SQL] LV.3 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.08.06 |
[프로그래머스 SQL] LV.4 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2023.08.06 |
[프로그래머스 SQL] LV.4 서울에 위치한 식당 목록 출력하기 (0) | 2023.08.06 |