Заказ по дате, если имя не найдено, заказ по времени - PullRequest
1 голос
/ 18 октября 2011

Можно ли заказать по дате, и если дата не указана для заказа по времени, и если время больше даты, то она будет первой в списке. Например, мы получили таблицу -

id    date         time          name

1    18.10.2011    18.10.2011    number    
2    ---------     19.10.2011    number2    
3    ---------     18.10.2011    number3

И стоит заказать что-то вроде этого -

1    number2
2    number
3    number3

Все данные сохраняются в базе данных в формате time(), поэтому, если время и дата равны, они будут смотреть на часы. Надеюсь, ты меня понял.

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Попробуйте:

select id, date, time, name
from MyTable
order by greatest(time,coalesce(date,time))

(Некоторые из этих имен столбцов могут быть зарезервированными словами - надеюсь, это упрощенный пример!)

2 голосов
/ 18 октября 2011

Вы можете попытаться использовать ORDER BY CASE. Это не проверено, но вы должны выбрать правильный путь:

ORDER BY CASE
  WHEN date IS NOT NULL AND time < date THEN date
  WHEN time > date OR date IS NULL THEN time
  ELSE time
END

На самом деле, ELSE time, вероятно, здесь не нужен. Первые два случая должны покрыть это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...