У меня есть таблица «сервис», которая содержит информацию об обслуживаемых транспортных средствах. У него есть id и Vehicle_registrationNumber, который является внешним ключом. Каждый раз, когда автомобиль обслуживается, делается новая запись. Так, например, если я сделаю сервис для автомобиля с регистрацией ABCD, он создаст новую строку, и я установлю car_reg, дату и пробег автомобиля в сервисной таблице (id установлен на autoincreament) (например, 12 | 20/01 / 2012 | ABCD | 1452, еще один сервис для той же машины создаст ряд 15 | 26.01.2012 | ABCD | 4782).
Теперь я хочу проверить, нуждается ли автомобиль в обслуживании (последнее обслуживание было 6 или более месяцев назад, или текущий пробег автомобиля более 1000 миль с момента последнего обслуживания), чтобы сделать это, мне нужно знать дата последнего обслуживания и пробег автомобиля при последнем обслуживании. Поэтому я хочу создать подзапрос, который будет возвращать по одной строке для каждой машины, и интересующая меня строка является самой новой (либо с наибольшим идентификатором, либо с последней конечной датой). Мне также нужно объединить его с другими таблицами, потому что мне это нужно для моего представления (я использую CodeIgniter, но не знаю, возможно ли писать подзапросы с использованием класса ActiveRecord CI)
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