我有一个包含服务车辆详细信息的表格“服务”。它有一个id和Vehicle_registrationNumber,它是一个外键。每当车辆进行维修时,都会有新的记录。因此,例如,如果我使用注册ABCD为汽车提供服务,它将创建新的行,并且我将在服务表中设置car_reg,日期和汽车的里程数(id设置为自动增量)(例如12 | 20/01/2012 | ABCD | 1452,同一辆车的另一项服务将创建第15行| 26/01/2012 | ABCD | 4782)。带连接的Mysql子查询
现在我想检查汽车是否需要一项服务(最后一项服务要么是6个月或更长时间,要么是目前的汽车里程已超过自上次服务以来的1000多英里),为此我需要知道最后一次服务的日期和最后一次服务的汽车行驶里程。所以我想创建一个子查询,它会为每辆汽车返回一行,而我感兴趣的行是最新的(无论是最大的ID还是最新的endDate)。我还需要与其他表加入吧,因为我需要为我的观点(我用笨,但不知道是否有可能使用CI的ActiveRecord类写的子查询)
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