Задать вопрос
@kpb

Как правильно сделать сортировку в таблице базы данных?

есть такая таблица
CREATE TABLE task (
        id INT PRIMARY KEY,
        title VARCHAR(255),
        priority INT,
        date_deadline date,
        date_create datetime,
    );


Данные из нее выбираются следующим образом: в начале самые приоритетные, затем
по крайнему сроку, а потом по дате создания строки в базе

select * from task order by priority desc, date_deadline asc, date_create asc


Появилась задача возможности ручной сортировки из приложения.
В таблицу можно добавить колонку sort с типом int,

Как правильно эти три колонки объединить в одну, чтобы сохранился порядок сортировки?
Значение для этой колонки можно формиировать из приложени
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Приоритет и две даты можно конвертнуть в строки и конкатенировать. Только следи за тем
чтобы лексикографический порядок соблюдался. Если честно непонятно что тебе дает это
объединение. Сортировки и для трех нормально работают.

UPD: Я обновлю свой ответ на основе новых данных.
Менеджеры хотят в приложении задачи перетаскивать

Если это наподобие двигания тасок в JIRA-borad то тогда действительно не нужны
никакие даты. Нужно одно поле rank. Возможно поле priority это оно и есть.

Тогда при накидывании тасок на доску мы просто делаем им sequence с любого
стартового значения. А когда менеджер двигает - нам нужна процедура
swap(id1, id2)
которая просто меняет ранги местами для двух JIRA ids.
Ответ написан
Ваш ответ на вопрос

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

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