Есть таблица MySQL с заказами и timestamp и id этих заказов, а есть таблица с обработкой заказов, но обработок может быть несколько. связка по id заказа.
Хочется сделать выборку заказов за некий интервал дат (BETWEEN) и присоеденить к ней по одной обработке этого заказа самой "первой" из всех по этому заказу, ну по сути ближайшую по дате.
Возможно ли это сделать одним запросом? По сути нужно ограничить LEFT JOIN одной строкой, на эту тему много всего, но у меня чего-то не получается.
Смысл в SQL:
SELECT o.id,o.date,p.date.p.state,p.some_column
FROM orders o
LEFT JOIN process p ON p.order=o.id AND p.date>=o.date ORDER BY p.date LIMIT 1
WHERE o.date BETWEEN '2018-01-21 08:00' AND '2018-01-21 21:00'
ORDER BY o.date
select o.id, o.date, p.date, p.state, p.some_column
FROM orders o left join
(select p.* from process p join
(select p.order, min(p.date) as date from process p
where p.date >= '2018-01-21 08:00' group by p.order) x
on p.order = x.order and p.date = x.date) p
on o.id = p.order
WHERE o.date BETWEEN '2018-01-21 08:00' AND '2018-01-21 21:00'
ORDER BY o.date
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости