MySQL запрашивает выбор из двух последних записей с конкретным полем значений.SQL-запрос для выбора из таблицы двух последних записей с определенным полем для каждого элемента
Привет, люди. Мои знания SQL недостаточно, поэтому я прошу вас помочь. У меня есть таблица с единицами и таблица с единичными услугами unit_service
id unit_id date mileage type
1 2 2000-12-01 1000 6
2 3 2000-07-07 1000 7
3 2 2000-07-01 1000 6
4 3 2000-08-03 1000 6
5 3 2000-08-03 1000 7
6 3 2000-08-04 1000 8
7 2 2000-08-04 1000 6
и так далее ... тип типа сервиса.
Я хочу получить список единиц с двумя последними датами для каждого типа обслуживания и распечатать его затем в таблице. На данный момент, я построить этот запрос
SELECT
u.unit_number, us.mileage, us.type, us.date
FROM
units AS u
LEFT JOIN
units_service AS us ON (u.id = us.unit_id)
WHERE
(us.id = (SELECT us2.id
FROM units_service AS us2
WHERE us2.unit_id=us.unit_id AND us2.type = 6
ORDER BY us2.date DESC LIMIT 1)
OR us.id = (SELECT us2.id
FROM units_service AS us2
WHERE us2.unit_id=us.unit_id AND us2.type = 6
ORDER BY us2.date DESC LIMIT 1,1)
OR us.id = (SELECT us2.id
FROM units_service AS us2
WHERE us2.unit_id=us.unit_id AND us2.type = 7
ORDER BY us2.date DESC LIMIT 1)
OR us.id = (SELECT us2.id
FROM units_service AS us2
WHERE us2.unit_id=us.unit_id AND us2.type = 7
ORDER BY us2.date DESC LIMIT 1,1)
OR us.id = (SELECT us2.id
FROM units_service AS us2
WHERE us2.unit_id=us.unit_id AND us2.type = 8
ORDER BY us2.date DESC LIMIT 1))
OR us.id = (SELECT us2.id
FROM units_service AS us2
WHERE us2.unit_id=us.unit_id AND us2.type = 8
ORDER BY us2.date DESC LIMIT 1,1)
AND u.unit_company = :unit_company
AND u.unit_type = :unit_type
ORDER BY us.unit_id
Является ли это запрос плохо или хорошо? Есть еще один запрос или несколько запросов, что лучше для этого? Или, может быть, вы думаете, что лучше использовать некоторые другие таблицы?
С уважением.
'LIMIT 2, 1' получает первый и третий период. Я думаю, вы имеете в виду 'LIMIT 1, 1'. –
@GordonLinoff Спасибо, да, вы правы, моя ошибка. Я исправлю это. –
Можете ли вы предоставить желаемый результат – Strawberry