2015-02-21 2 views
1

Я пытаюсь выполнить запрос mysql в этой таблице данных, которые вернут последнюю дату, которая меньше текущей даты, сгруппированной по номеру бронирования.Выберите максимальную дату в группе, где максимальная дата меньше текущей даты

Пример таблицы:

bookingnumber | booking_date | 
------------------------------ 
11   | 2015-02-21 | 
11   | 2015-02-22 | 
11   | 2015-02-20 | 
12   | 2015-02-20 | 
13   | 2015-02-22 | 
------------------------------ 

Если текущая дата 2015-02-21 Я стремлюсь, чтобы получить этот результат:

bookingnumber | booking_date | 
------------------------------ 
12   | 2015-02-20 | 

Я экспериментировал с MAX, subquerys и и это «лучший», который мне удалось сделать до сих пор:

"select bookingnumber, booking_date 
FROM table 
WHERE 
(select max(booking_date) from table as f where f.bookingnumber = table.bookingnumber) 
AND booking_date < CURRENT_DATE" 

Это, однако, дает мне результат:

bookingnumber | booking_date |  
------------------------------ 
12   | 2015-02-20 | 
11   | 2015-02-20 | 
+0

Я, очевидно, не смог справиться с автоматическим форматированием здесь, пытаясь исправить это, извините. – jboo

+0

Вы говорите о группировке в начале, но тогда не хотите группировки в результате? Я не понимаю, почему вам нужен только элемент «12»? – Wain

ответ

1

Следующие результаты возвращают результаты, о которых вы просите. Он возвращает последнюю дату бронирования, для которой нет текущей или будущей бронирующей даты:

+0

Большое спасибо. Я буду изучать это! – jboo

+0

синтаксическая ошибка: 'CURRENT_DATE);' должно быть 'CURRENT_DATE();' – hakiko

Смежные вопросы