서비스 대상 차량에 대한 세부 정보가 포함 된 'service'테이블이 있습니다. id와 Vehicle_registrationNumber는 외래 키입니다. 차량이 수리 될 때마다 새로운 기록이 만들어집니다. 예를 들어, 등록 ABCD로 자동차 용 서비스를 만들면 새로운 행이 생성되고 service 테이블에 car_reg, date 및 car 's mileage가 설정됩니다 (id는 autoincreament로 설정 됨) (예 : 12 | 20/01/2012 | ABCD | 1452, 같은 차량에 대한 또 다른 서비스가 행 15 | 26/01/2012 | ABCD | 4782)를 만듭니다.조인이 포함 된 Mysql 하위 쿼리
이제 자동차에 서비스가 필요한지 확인하고 싶습니다 (마지막 서비스가 6 개월 전이거나 지난 서비스 이후 1000 마일 이상있는 경우). 마지막 서비스 날짜 및 마지막 서비스시의 차량 주행 거리를 알아야합니다. 그래서 각각의 자동차에 대해 하나의 행을 반환 할 하위 쿼리를 만들고 싶습니다. 관심있는 행은 가장 최신 ID 또는 최신 endDate를 가진 최신 행입니다. 내가보기
SELECT * FROM (
SELECT *
FROM (`service`)
JOIN `vehicle` ON `service`.`Vehicle_registrationNumber` = `vehicle`.`registrationNumber`
JOIN `branch_has_vehicle` ON `branch_has_vehicle`.`Vehicle_registrationNumber` = `vehicle`.`registrationNumber`
JOIN `branch` ON `branch`.`branchId` = `branch_has_vehicle`.`Branch_branchId`
GROUP BY `service`.`Vehicle_registrationNumber`)
AS temp
WHERE `vehicle`.`available` != 'false'
AND `service`.`endDate` <= '2011-07-20 20:43'
OR service.serviceMileage < vehicle.mileage - 10000
당신이 그리 이전 서비스 항목을 필터링 할 것이기 때문에 작동하지 않을 것입니다 생성 문을 바랍니다. 또 다른 힌트 마일은 1000 또는 10000이어야합니다. 텍스트와 SQL 문이 다릅니다 – rauschen