[프로그래머스] 취소되지 않은 진료 예약 조회하기_MySQL
2023. 3. 18. 16:06ㆍDataBase/SQL Query Problem
728x90
반응형
SMALL
APPOINTMENT 테이블에 대해 PATIENT 테이블과 DOCTOR 테이블을 LEFT JOIN하면 되는 문제였다.
이런 생각을 떠올리기는 되게 쉬웠는데 이를 구현하는게 쪼~끔 까다로웠다.
세개의 테이블을 한 번에 조인하려고 했는데 잘 안됐다.
그래서 이번에도 WITH 절을 이용해 PATINET 테이블과 LEFT JOIN을 한 번 진행하고, 이후에 한 번 더 DOCTOR 테이블과 조인했다.
그런데 뭔가 WITH 절을 남발하는게 무조건 좋은가? 라는 생각이 들었다. 그래서 다중 조인하는 방법을 찾아봤다.
역시 있었다.
생각보다 어렵지 않아서 금방 쿼리를 작성할 수 있었다.
WITH 절을 이용한 정답
WITH AP AS (
SELECT
A.*, P.PT_NAME
FROM
APPOINTMENT A LEFT JOIN PATIENT P
ON
A.PT_NO = P.PT_NO
WHERE
A.MCDP_CD LIKE 'CS'
AND A.APNT_YMD LIKE '2022-04-13%'
AND A.APNT_CNCL_YN LIKE 'N'
)
SELECT
AP.APNT_NO, AP.PT_NAME, AP.PT_NO, AP.MCDP_CD, D.DR_NAME, AP.APNT_YMD
FROM
AP LEFT JOIN DOCTOR D
ON
AP.MDDR_ID = D.DR_ID
ORDER BY
AP.APNT_YMD ASC;
다중 LEFT JOIN을 이용한 정답
SELECT
A.APNT_NO, P.PT_NAME, P.PT_NO, A.MCDP_CD, D.DR_NAME, A.APNT_YMD
FROM
APPOINTMENT A
LEFT JOIN PATIENT P
ON A.PT_NO = P.PT_NO
LEFT JOIN DOCTOR D
ON A.MDDR_ID = D.DR_ID
WHERE
A.MCDP_CD LIKE 'CS'
AND A.APNT_YMD LIKE '2022-04-13%'
AND A.APNT_CNCL_YN LIKE 'N'
ORDER BY
A.APNT_YMD ASC728x90
반응형
LIST
'DataBase > SQL Query Problem' 카테고리의 다른 글
| [프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기_MySQL (0) | 2023.03.20 |
|---|---|
| [프로그래머스] 오프라인/온라인 판매 데이터 통합하기_MySQL (0) | 2023.03.19 |
| [프로그래머스] 주문량이 많은 아이스크림들 조회하기_MySQL (0) | 2023.03.17 |
| [프로그래머스] 저자 별 카테고리 별 매출액 집계하기_MySQL (0) | 2023.03.16 |
| [프로그래머스] 자동차 대여 기록 별 대여 금액 구하기_MySQL (0) | 2023.03.16 |