MysteryDragon
@MysteryDragon
программист

Предложите реализацию метода сортировки для MySQL-запроса?

Озадачился таким вот вопросом:
Есть поля, условно, dt_start, dt_end, которые хранят timestamp начала и конца некоего события.
Требуется сделать такую сортировку в MySQL-запросе, чтобы в результате первыми шли события, проходящие сейчас, затем шли грядущие события по возрастанию их даты, а затем - прошедшие, по убыванию их даты.
Не интересуют варианты "union", "отсортируй результат в коде" и пр.
Только махинации с полем ORDER BY.
Интересует принципиальная возможность написать такой запрос (буду рад примеру), или же заключение о том, что такой запрос построить не удастся.
Считайте это просто разминкой для ума.
Спасибо. :)
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А в чём сложность этой задачи?
SELECT *
    FROM `table`
    ORDER BY IF(NOW() BETWEEN `dt_start` AND `dt_end`, 0,
                IF (NOW() < `dt_start`, 1, 2)),
             ABS(DATEDIFF(NOW(), `dt_start`)), 
             `dt_start`, `dt_end`
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mahoho
@mahoho
Full stack certified PHP developer.
Без UNION это сделать невозможно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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