michi: Positionsnummern neu vergeben

Hallo,

ich habe eine Tabelle, in der die einzelnen Positionen vieler Vorgänge gespeichert sind.
In der Tabelle gibt es eine Spalte 'position'.

Bsp:

vorgang: 101, pos: 1
vorgang: 101, pos: 2
vorgang: 101, pos: 3
vorgang: 101, pos: 4
vorgang: 101, pos: 5

Lösche ich jetzt den Vorgang auf pos: 2, dann müssen alle nachfolgenden Positionen neu berechnet und gespeichert werden.

Ich kann jetzt natürlich erst die Anzahl der Zeilen nach der gelöschten Zeile ermitteln und dann in einer Schleife alle Datensätze mit neuen Postionsnummern updaten.

Scheint mir aber etwas umständlich, gibts da was einfacheres und vor Allem schnelleres?

Gruß michi

  1. Scheint mir aber etwas umständlich, gibts da was einfacheres und vor Allem schnelleres?

    Warum stehen diese Werte da überhaupt drin und werden nicht on-the-fly bei der Ausgabe generiert oder stehen in einem View bereit?

    1. Warum stehen diese Werte da überhaupt drin und werden nicht on-the-fly bei der Ausgabe generiert oder stehen in einem View bereit?

      Damit man sie umsortieren kann?

      1. Warum stehen diese Werte da überhaupt drin und werden nicht on-the-fly bei der Ausgabe generiert oder stehen in einem View bereit?

        Damit man sie umsortieren kann?

        Wieso umsortieren? Die Positionsnummer ist offenbar nur für die Ausgabe notwendig und hat in der Datenhaltung keinerlei Bedeutung (sonst könntest du sie nicht ohne weiteres ändern).

        Diese Nummer wird erst erstellt, wenn du die Daten abfrägst und zwar in in der Sortierung, die du vorgibst - alles davor ist völlig egal, da die Nummer ja praktisch willkürlich ist.

        1. Diese Nummer wird erst erstellt, wenn du die Daten abfrägst und zwar in in der Sortierung, die du vorgibst - alles davor ist völlig egal, da die Nummer ja praktisch willkürlich ist.

          Was hat das mit meiner ursprünglichen Frage zu tun?
          Muss ich mich jetzt rechfertigen, warum die Positionsnummer in der Tabelle richtig ist?

          Trotzdem, gerne.

          Ich brauche die Nummer, damit der User bestimmen kann, in welcher Reihenfolge er sie in seinen Reports haben möchte, weil z.B. die Software nicht alle seine individuellen Kriterien berücksichtigen kann.
          Wenn nun eine Position gelöscht wird müssen die andern nachrücken.
          In einer anderen Funktion können die Positionen verschoben werden. Da stellt sich ein ähnliches Problem wie beim löschen.

          Sowas solls geben, oder?

          1. Diese Nummer wird erst erstellt, wenn du die Daten abfrägst und zwar in in der Sortierung, die du vorgibst - alles davor ist völlig egal, da die Nummer ja praktisch willkürlich ist.

            Was hat das mit meiner ursprünglichen Frage zu tun?

            Alles.

            Muss ich mich jetzt rechfertigen, warum die Positionsnummer in der Tabelle richtig ist?

            Nein, nur den Sinn erklären - oder erwartest du ernsthaft dass man dir eine schlüssige, vernünftige Antwort geben, kann, wenn man den Kontext erschnüffeln muss?

            Trotzdem, gerne.

            Ich brauche die Nummer, damit der User bestimmen kann, in welcher Reihenfolge er sie in seinen Reports haben möchte, weil z.B. die Software nicht alle seine individuellen Kriterien berücksichtigen kann.
            Wenn nun eine Position gelöscht wird müssen die andern nachrücken.
            In einer anderen Funktion können die Positionen verschoben werden. Da stellt sich ein ähnliches Problem wie beim löschen.

            Sowas solls geben, oder?

            Dann brauchst du ein Sortierkriterium - das hat aber nichts mit der Positionsnummer zu tun, die Positionsnummer ergibt sich aus der Sortierung.

            Wenn die Daten aber aufgrund verschiedener Faktore ausgegeben werden können, ist das Sortierkriterium nur ein zusätzliches Mittel zum Zweck und hat mit der Reihenfolge der Ausgabe nichts zu tun.

            Wenn man diese Überschneidung vermeiden kann ist das sehr zu begrüßen - es ist ein Riesen Vorteil, wenn man sich bei der Sortierung nicht auch noch um eine sequentielle Abfolge kümmern muss.

            1. Hallo,

              Dann brauchst du ein Sortierkriterium - das hat aber nichts mit der Positionsnummer zu tun, die Positionsnummer ergibt sich aus der Sortierung.

              nein, umgekehrt: Die Positionsnummer bestimmt die Sortierung, so wie ich die Situation verstanden habe.

              Ich stelle mir das so vor, dass es um Einträge geht, die der Anwender ganz nach seinen Wünschen sortieren kann, ohne dass diese Sortierung einem erkennbaren Schema folgen muss - so als ob jemand in der Schublade die schwarzen Socken ganz nach links legt, dann die blauen daneben, dann die hellgrauen und schließlich die braunen. Das ist eine willkürlich gewählte Reihenfolge, die der Sockenbesitzer so haben möchte, aber sie lässt sich nicht anhand physischer Merkmale der Socken ausdrücken.

              Früher habe ich auf diese Weise Verzeichniseinträge sortiert. Oft benutzte Dateien nach oben, Zusammengehöriges als Gruppe zusammen. Seit die gängigen Dateimanager aber immer irgendeine eigene systematische Sortierung anwenden, geht das auch nicht mehr. :-(

              So, jetzt bist du wieder dran. ;-)

              Ähm, Michi: Warum muss denn das Feld, das die Sortierfolge vorgibt, lückenlos aufsteigend sein? So wie ich die Aufgabe bis hierher verstanden habe, darf es doch gern auch Lücken haben, die stören doch beim Sortieren nicht. Und wenn der Anwender das nächste Mal seine Wunsch-Reihenfolge ändert, wird wieder fortlaufend neu numeriert.

              So long,
               Martin

              --
              Der Sinn einer Behörde besteht in ihrer Existenz.
                (alte Beamtenweisheit)
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Ähm, Michi: Warum muss denn das Feld, das die Sortierfolge vorgibt, lückenlos aufsteigend sein? So wie ich die Aufgabe bis hierher verstanden habe, darf es doch gern auch Lücken haben, die stören doch beim Sortieren nicht. Und wenn der Anwender das nächste Mal seine Wunsch-Reihenfolge ändert, wird wieder fortlaufend neu numeriert.

                Das ist es worauf ich abzielte - das Kriterium für die Sortierreihnfolge muss nicht lückenlos sein - da kann 4, 8, 16, 64 drinstehen und bei der Ausgabe wird jedem Datensatz eine fortlaufende Nummer zugeordnet - es ist überhaupt nicht notwendig, alle neu durchzunummieren, das macht es nur komplizierter

                Wenn man bei fortlaufender Nummerierung des Sortierungskriteriums einen Datensatz zwischen zwei bestehende Reinquetschen will, muss man alle nachfolgenden Neu nummerieren, wenn diese Nummerierung hingegen Willkürlich erfolgt, muss man das nicht - man muss nur einen freien Wert zwischen den beiden Wählen (was sich z.B mit Gleitkommazahlen realisieren lässt). Dass man irgendwann, wenn die Feldwerte überzulaufen drohen neu vergeben muss ist klar - aber irgendwo gibt es immer ein mathematisches Limit.

                1. Om nah hoo pez nyeetz, suit!

                  wenn diese Nummerierung hingegen Willkürlich erfolgt, muss man ... nur einen freien Wert zwischen den beiden Wählen

                  etwa das arithmetische Mittel

                  Matthias

                  --
                  1/z ist kein Blatt Papier.