2024. 10. 31. 15:58ㆍ부트캠프 TIL
1. 프로그래머스 사용
1-1) sql 문제 : 취소되지 않은 진료예약 조회하기 - Lv.4
ㄴ 문제 : 환자테이블,의사테이블, 진료예약테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(cs) 진료예약 내역을 조회하는 sql문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.
문제풀이)
1) 문제를 읽고 필요한 조건들을 체크한다
- 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목 출력
2) 2022년 4월 13일 데이터
- 진료예약일시 4월 13일 where절로 체크
3) 취소되지 않은 흉부외과(cs) 예약내역
- 취소여부, 진료과코드 값 and절로 체크
4) 진료예약일시 기준 오름차순
- order by asc를 활용해야함.
5) 최종 완성 쿼리문
-
SELECT a.APNT_NO, c.PT_NAME, c.PT_NO, a.MCDP_CD, b.DR_NAME, a.APNT_YMD
FROM APPOINTMENT as a
LEFT JOIN DOCTOR as b ON a.MDDR_ID = b.DR_ID
LEFT JOIN PATIENT as c ON a.PT_NO = c.PT_NO
WHERE DATE_FORMAT(a.APNT_YMD, '%Y-%m-%d') = '2022-04-13'
AND a.APNT_CNCL_YN = 'N'
AND a.MCDP_CD = 'CS'
ORDER BY a.APNT_YMD ASC
- 문제 풀이로만 보면 컬럼들 불러오고, 특정 조건들 where과 and로 주면되서 간단한 문제인것처럼 보인다.
- 그러나 테이블 3개를 다중 join을 진행해야하고, 서로 참조되는 컬럼이 뭔지 체크를 잘해야한다.
- 다중 조인과 참조되는 컬럼 비교만 잘하면 바로 해결되는 문제이다.
- 다중 조인은 양쪽 테이블과 다 참조될 테이블을 먼저 기준으로 잡고 각 테이블들을 조인시키는 형태로 진행하면된다.
- 문제에선 진료예약이 메인이 되고, 의사정보,환자정보테이블이 서브로 참조할 수 있다.
- a.MDDR_ID = b.DR_ID 의사ID를 기준으로 의사정보테이블에서 문제에서 요구하는 의사이름을 가져온다 .
- a.PT_NO = c.PT_NO 환자번호를 기준으로 환자정보테이블에서 문제에서 요구하는 환자이름, 환자번호를 가져온다.
2. aop 완성 및 트러블 슈팅 기록
https://kuk1938.tistory.com/191
https://kuk1938.tistory.com/192
'부트캠프 TIL' 카테고리의 다른 글
[70] 부트캠프 TIL - 본캠프 51일차 (4) | 2024.11.04 |
---|---|
[69] 부트캠프 TIL - 본캠프 50일차 (10) | 2024.11.01 |
[67] 부트캠프 TIL - 본캠프 48일차 (0) | 2024.10.30 |
[66] 부트캠프 TIL - 본캠프 47일차 (1) | 2024.10.29 |
[65] 부트캠프 TIL - 본캠프 46일차 (0) | 2024.10.28 |