https://school.programmers.co.kr/learn/courses/30/lessons/157341
쉬운 문제이지만, join 개념이 잡히지 않았다면 헷갈릴 수 있어 가지고 와봤다.
우선, CAR_RENTAL_COMPANY_RENTAL_HISTORY(이하 history) join CAR_RENTAL_COMPANY_CAR (이하 car)
테이블은 history 테이블이 car테이블의 PK를 FK로 가지고 있기에, 이를 가지고 join해야하기에 기본조건을 추가해야한다.
가끔 무의식 적으로 join 이 알아서 PK == FK 로 join해준다고 생각하는 실수를 해서 강조해보았다.
또한, car과 history 테이블을 join 시, car 테이블은 car_id를 PK로 가지기에 중복된 car_id가 없지만, history 테이블은 car_Id 가 중복 될 수 있기에, 둘을 join 시 중복된 car_id 가 나올 수 있다.
그러렇기에 distinct 조건을 걸어줘야한다.
# car_id가 join 과정에서 중복될 수 있다.
#( 같은 car_id여도, history테이블에 해당 key를 FK로 가진 튜플이 다수 존재하기에)
select distinct c.car_id
from CAR_RENTAL_COMPANY_RENTAL_HISTORY as ch join CAR_RENTAL_COMPANY_CAR as c
on c.car_id=ch.car_id # 주요 조인 조건(PK = FK)
and date_format(ch.start_date,'%m')= 10 and c.car_type="세단"
order by c.car_id desc
'코딩테스트' 카테고리의 다른 글
[삼성 sw 역량 테스트 A형 샘플 문제] 프로세서 연결하기 c++ (0) | 2023.07.26 |
---|---|
시각(년, 월, 일,...) 문제 완전 공략 (c++) (0) | 2023.07.25 |
sql 사용 완전 공략 [mysql] (0) | 2023.07.20 |
[프로그래머스] 특정 기간 동안 대여 가능한 차들의 비용 구하기 (mysql) (0) | 2023.07.20 |
카카오 블라인드 채용 2023 미로 탈출 명령어 c++ [사전 순] (0) | 2023.07.18 |