Pergunta

Eu tenho uma tabela que contém tarefas e quero dar a estes uma ordenação explícita com base na prioridade da tarefa. A única maneira de pensar de fazer isto é por meio de uma única coluna int que índices em que a tarefa é no termo da prioridade (isto é, uma é superior 1000 está baixo).

O problema é que disse que queria tarefa de atualização e definir sua prioridade para um valor inferior, eu teria que atualizar todas as outras linhas entre o seu valor actual e o novo valor.

alguém pode sugerir uma melhor forma de implementar isso?

Foi útil?

Solução

Use um valor de número real como a prioridade. Você sempre pode deslizar em um valor entre dois valores existentes com algo como newPri = task1Pri + (task2Pri - task1Pri)/2 onde Task1 tem o valor numérico menor prioridade (que é provavelmente o maior piority).

pontos Corin que mínimo e máximo prioridades teria que ser calculado para tarefas inseridas na parte superior ou inferior da lista de prioridades.

E joelhardi nos lembra que um reordenar processo é uma boa idéia para limpar a mesa de vez em quando.

Outras dicas

Em vez de criar uma coluna numerada como você disse, crie um campo chamado algo como pai. Cada linha contém o pk de seu item pai. Quando você quiser mover um item para baixo apenas mudar sua pk pai para o novo e o item (s) que fazem referência a ele em sua pk pai. Pense listas individualmente vinculados.

Eu como a resposta de Kevin melhor, mas se você quer uma solução rápida e suja, basta fazê-lo da maneira que você já descrito, mas em vez de incrementar em 1, incremento de 10 ou 100 ... dessa forma, se você precisa re-priorizar, você tem algum espaço de manobra entre as tarefas.

Gostaria de atribuir apenas um pequeno número de valores (1..10) e ORDER BY DESC depois Prioridade, DateCreated ASC. Se você precisa ter prioridades diferentes para cada tarefa que você precisa atualizar onde a prioridade> xxx como você disse.

Se há duas tarefas pode ter a mesma prioridade, então eu acho que é o que você tem que fazer. Mas você poderia ter uma prioridade e uma coluna DateModified e apenas uma espécie de ambos para obter a ordem correta com base na prioridade e última atualização, se você permitir prioridade a ser duplicado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top