Здравствуйте!
Есть сайт для продажи билетов в большой театр. На сайте есть страница афиши. На этой странице пользователь может
фильтровать мероприятия по месяцу, жанру и сцене.
Когда пользователь ввел фильтр, на сервере 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:
Проблема в том, что если мероприятие проходит несколько раз, то возвращается несколько строк. Мне нужно получить ближайшие по времени мероприятия. То есть в нашем случае 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()
Заранее выражаю огромную благодарность всем, кто поможет!