У меня проблема, я не могу выбрать 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:
order_id | date -------: | :--------- 2 | 2019-11-14 4 | 2019-11-14Аналитические функции делают эту проблему очень решаемой, и мы можем использовать здесь
ROW_NUMBER, чтобы идентифицировать самые последние записи для каждого заказа:В этом ответе предполагается, что вы используете MySQL версии 8 или новее.
Это вернет order_id, дату, драйвер, упорядоченный по идентификатору заказа.