Linuchs: vorgänge rund nachfolger ermitteln

Beitrag lesen

Dein Beispiel ist falsch, die id 23 und 54 sind doppelt.

ist sorting vorgegeben oder ermittelst du selbst?

Die Lösung ist abhängig von der Anwendung. Wenn es um die Titel einer CD geht, ändert sich ja nichts, weder wird die Reihenfolge geändert noch wird ein Titel eingefügt oder entfernt.

Wenn es um eine Aufgabe geht, bei der Titel öfter zu- oder weggefügt werden, gibst du jedem Datensatz die vorgaenger_id und nachfolger_id.

Beim Einfügen mußt du dann die neue id als Nachfolger beim Vorgänger und als Vorgänger beim Nachfolger eintragen.

vorgaenger_id | id | nachfolger_id

(anfang)      | 34    | 23-s5
34            | 23-s5 | 54-s6
23-s5         | 54-s6 | 23-s7
54-s6         | 23-s7 | (ende)

Die neue id sei 55 und ist an zweiter Stelle einzufügen:

vorgaenger_id | id | nachfolger_id

(anfang)      | 34    | !23-s5! 55
34            | 55    | 23-s5
!34! 55       | 23-s5 | 54-s6
23-s5         | 54-s6 | 23-s7
54-s6         | 23-s7 | (ende)

Das geht viel schneller, als bei jeder Änderung die Sortierfolge zu ermitteln und diese bei allen (nachfolgenden) Sätzen zu ändern.

Und die gewünschten Vor- und Nachgänger kannst du beim gefundenen Datensatz direkt ablesen.

Linuchs