JackShcherbakov
@JackShcherbakov

Как получить строку с ближайшей датой MySQL?

Здравствуйте!

Есть сайт для продажи билетов в большой театр. На сайте есть страница афиши. На этой странице пользователь может фильтровать мероприятия по месяцу, жанру и сцене.

Когда пользователь ввел фильтр, на сервере PHP генерирует вот такой SQL запрос:

SELECT bolshoy_theatre_events.id, 
       title, 
       hall, 
       date, 
       time, 
       prices_json 
FROM   bolshoy_theatre_events, 
       bolshoy_theatre_schedule 
WHERE  event_id = bolshoy_theatre_events.id 
       AND date >= CURRENT_DATE() 
       AND Month(date) = 11 
       AND ( hall = 'historic_hall' 
              OR hall = 'beethoven_hall' 
              OR hall = 'сhamber_stage' 
              OR hall = 'new_stage' ) 
ORDER  BY date


Вот что возвращает MySQL:

5bb89dd87f8ca515293697.jpeg

Проблема в том, что если мероприятие проходит несколько раз, то возвращается несколько строк. Мне нужно получить ближайшие по времени мероприятия. То есть в нашем случае MySQL вернул 2 строки, а нужна только первая, потому что там дата меньше, так сказать.

Я пробовал использовать функцию MIN() MySQL, но у меня не получилось вклинить ее в такой запрос.

Зато получилось ее использовать в запросе попроще:

SELECT bolshoy_theatre_events.id, 
       title, 
       hall, 
       date, 
       time, 
       prices_json 
FROM   bolshoy_theatre_events, 
       bolshoy_theatre_schedule 
WHERE  event_id = bolshoy_theatre_events.id 
       AND date IN (SELECT Min(date) 
                    FROM   bolshoy_theatre_schedule 
                    WHERE  event_id = bolshoy_theatre_events.id) 
       AND time IN (SELECT Min(time) 
                    FROM   bolshoy_theatre_schedule 
                    WHERE  event_id = bolshoy_theatre_events.id) 
       AND date >= CURRENT_DATE()


Заранее выражаю огромную благодарность всем, кто поможет!
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
neuotq
@neuotq
Прокрастинация
Группируйте по уникальному свойству, например по id , таким образом в конце добавляется GROUP BY bolshoy_theatre_events.id
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
Limit 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы