Chriss: MySQL: Update von mehreren Sätzen, deren Anzahl variabel ist

Hallo Comunity!
Ich hab da ein schweres Problem!

Ich haben eine MySQL - DB mit einer Tabelle die so aussieht:

ID |Pos |Text
---------------------
6  |1  |Test
22 |2  |ABC
1  |3  |xyz
4  |4  |test
9  |5  |cba
31 |6  |wef
...

ID ist Primary key. Nach Pos wird absteigend sortiert.

Lösche ich jetzt den Satz mit der Positionsnummer 3 muss ich die Positionsnummern für die Sätze mit den ID's 4 und 9 aktualisieren, sodas der Satz mit der ID 4 die Positionsnummer 3 und der mit ID 9 die Positionsnummer 4 usw. erhält. Die Positionsnummern sind wichtig für die spätere Sortierung auf der Seite. Ich kann dazu nicht die ID verwenden, da sich die Position einzelner Sätze ändern kann.

Da ich aber erst seit zwei Wochen mit Perl und MySQL arbeite habe ich keinen Plan, wie ich das realisieren kann. Hab schon einiges versucht, aber mir fehlt einfach etwas Erfahrung und Wissen. Ich muss das Skript allerdings schnellst möglich geschrieben haben.

Der Zugriff auf die Datenbank besteht über DBI und funktioniert.

Wenn euch dazu irgendwas einfällt wär ich wirklich sehr dankbar!

MfG - Chriss

  1. Hallo Comunity!
    Ich hab da ein schweres Problem!

    Ich haben eine MySQL - DB mit einer Tabelle die so aussieht:

    ID |Pos |Text

    6  |1  |Test
    22 |2  |ABC
    1  |3  |xyz
    4  |4  |test
    9  |5  |cba
    31 |6  |wef
    ...

    ID ist Primary key. Nach Pos wird absteigend sortiert.

    Lösche ich jetzt den Satz mit der Positionsnummer 3 muss ich die Positionsnummern für die Sätze mit den ID's 4 und 9 aktualisieren, sodas der Satz mit der ID 4 die Positionsnummer 3 und der mit ID 9 die Positionsnummer 4 usw. erhält. Die Positionsnummern sind wichtig für die spätere Sortierung auf der Seite. Ich kann dazu nicht die ID verwenden, da sich die Position einzelner Sätze ändern kann.

    Da ich aber erst seit zwei Wochen mit Perl und MySQL arbeite habe ich keinen Plan, wie ich das realisieren kann. Hab schon einiges versucht, aber mir fehlt einfach etwas Erfahrung und Wissen. Ich muss das Skript allerdings schnellst möglich geschrieben haben.

    Der Zugriff auf die Datenbank besteht über DBI und funktioniert.

    Wenn euch dazu irgendwas einfällt wär ich wirklich sehr dankbar!

    MfG - Chriss

    Hallo,

    probier mal

    UPDATE tabelle
      SET pos = pos -1
      WHERE pos > 'poswert_der_gelöscht_wurde'

    Gruss

    Bernd

  2. Hallo Bernd,

    war ne gute Idee... aber die geht nicht. Er bringt zwar keinen Fehler, dekrementiert aber auch nichts...

    Servus Christian

  3. Danke Bernd!

    Hat doch geklappt... wer lesen kann ist klar im Vorteil *g*.
    Ist schon klar, dass es nicht funktioniert, wenn man den statementhandle nich initialisiert... aber so bin ich halt!

    Gruß Christian