У меня проблема, я не могу выбрать SQL в своей базе данных. Мне нужно выбрать все элементы заказа, где во второй таблице указана максимальная дата как определенная дата. Так, например, мне нужны заказы, которые заканчиваются 2019-11-14
Таблица заказов:
order_id driver ---------|-------- 1 | 10 | 2 | 10 | 3 | 15 | 4 | 15 | 5 | 8 |
Таблица элементов календаря:
calendar_id order_id date -------------|------------|--------------- 1 | 1 | 2019-11-13 2 | 1 | 2019-11-14 3 | 1 | 2019-11-15 4 | 2 | 2019-11-13 5 | 2 | 2019-11-14 // This is last date on order AND = 2019-11-14 6 | 3 | 2019-11-16 7 | 3 | 2019-11-17 8 | 3 | 2019-11-18 9 | 4 | 2019-11-13 10 | 4 | 2019-11-14 // This is last date on order AND = 2019-11-14
Мне нужно выбрать заказы, которые заканчиваются на дату 2019-11-14
, поэтому окончательный результат будет (с group by on order_id
):
order_id date ---------|--------------- 2 | 2019-11-14 | 4 | 2019-11-14 |
Мой мозг разогревается
какой запрос вы пробовали? вы можете использовать max () и группировать по — person Dejw Roško schedule 14.11.2019
Вы можете использовать агрегирование и
having
:Демонстрация DB Fiddle:
Аналитические функции делают эту проблему очень решаемой, и мы можем использовать здесь
ROW_NUMBER
, чтобы идентифицировать самые последние записи для каждого заказа:В этом ответе предполагается, что вы используете MySQL версии 8 или новее.
Это вернет order_id, дату, драйвер, упорядоченный по идентификатору заказа.