Ограничить JOIN одной строкой

323
24 января 2018, 13:19

Есть таблица 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 
Answer 1
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 
READ ALSO
Как составить такой вот sql запрос?

Как составить такой вот sql запрос?

Вот моя карта умаНа ней видно что поля таблицы Match team_one и team_two обращаются к таблице Team по полю id, т

270
Первый раз встречающиеся по дате

Первый раз встречающиеся по дате

Есть табличка состоящая из колонок id, date, statusid повторяются

258
Правильная конструкция выборки laravel

Правильная конструкция выборки laravel

Есть таблица booking в ней есть две колонки user_id и status мне нужно сделать выборку по конкретному пользователю с учетом нужного статуса, попытки...

312