[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка в прямом и обратном порядке одновременн
Nadyu
Добрый вечер!
SQL знаю на пальцах, но очень нужно отсортировать таблицу:
Сначала идут даты с сегодняшнего дня и будущие в обратном порядке,
За ними даты прошедшие в прямом порядке.
Т.е., например, есть таблица:

date
2017-09-02
2017-09-08
2017-09-16
2017-10-20
2017-05-08
2017-08-29
2017-08-15

Сегодня, к примеру, 2017-08-29

Нужно чтобы вывело:
date
2017-08-29
2017-09-02
2017-09-08
2017-09-16
2017-10-20 (дальше старые даты)
2017-08-15
2017-05-08


Мой код:
(
SELECT date
FROM tb
WHERE date>= CURDATE( )
ORDER BY date ASC
)
UNION (

SELECT date
FROM tb
WHERE date< CURDATE( )
ORDER BY date DESC
)

Выводит ерунду:
date[​IMG]
2017-09-02
2017-09-08
2017-09-16
2017-10-20
2017-08-29
2017-05-08
2017-08-15
SerginhoLD
(SELECT date, date as order_1, NULL as order_2 FROM tb WHERE date >=  CURDATE())
UNION
(
SELECT date, NULL as order_1, date as order_2 FROM tb WHERE date < CURDATE())

order by (order_1 is NULL) asc, order_1 asc, order_2 desc


set @curDate := CURDATE();
SELECT
date,
if(@curDate <= date, date, null) as order_1,
if(@curDate > date, date, null) as order_2
FROM tb
order by (order_1 is NULL) asc, order_1 asc, order_2 desc


_____________
"internet explorer всех правильней отображает страницы" ©
Nadyu
Цитата (SerginhoLD @ 29.08.2017 - 20:13)
(SELECT date, date as order_1, NULL as order_2 FROM tb WHERE date >=  CURDATE())
UNION
(
SELECT date, NULL as order_1, date as order_2 FROM tb WHERE date < CURDATE())

order by (order_1 is NULL) asc, order_1 asc, order_2 desc

Класс!!!
Спасибо огромное!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.