Hallo,
ich habe folgende db:
+--+----+-------+
|id|name|orderId|
+--+----+-------+
| 1|foo | 2|
| 2|bar | 1|
| 3|fobr| 3|
| 4|brfo| 4|
+--+----+-------+
Die "orderId" dient dazu, eine beliebige Ordnung auf der Menge der Datensätze zu definieren (unabhängig von der "id").
SELECT id, name FROM testTable ORDER BY orderId ergibt dann:
2,bar
1, foo
3, fobr
4, brfo
Soweit, sogut.
Nun sollen von verschiedenen db clients aus Datensätze eingefügt und entfernt werden sowie die Reihenfolge geändert werden können.
U.a. weil ich nicht alle Programme die diese Operationen ausführen selbst schreibe, möchte ich nicht die Hand dafür ins Feuer legen, dass die Folge der "orderId"s immer eine "geschlossene" bleibt.
Also, dass es nach etlichen Einfügen-, Entfernen- und Umsortier-Operationen nicht z.B. die orderId's: "1,2,5,6" vorliegen.
Damit wäre die Sortierte Ausgabe (um die geht es letztlich) immer noch kein Problem, aber das ist doch irgenwie Pfusch!
Hat jemand eine Idee, wie man diese Problem elegant vermeidet / behebt?
Ich könnte eine Prüf-/Reparatur-Routine schreiben, die die Differenz zweier aufeinanderfolgender orderId's berechnet und, falls der nicht eins ist, alle folgenden orderId's entsprechend verringert. Aber das ist mir auch irgendwie ganz schön umständlich...
Gruß
Ralf