Eigene Position zu Datensatz addieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Eigene Position zu Datensatz addieren

    Hallihallo....

    Folgendes Szenario:
    Alle Datensätze haben ein Feld "Mein_Feld", welches eine zufällige Zahl enthält. Nun sollen alle Datensätze aufsteigend sortiert werden (nicht nach Mein_Feld, sondern nach "Sortier_mich") und der Inhalt von Mein_Feld folgendermaßen geändert werden. Für alle Datensätze soll Mein_Feld auf einen bestimmten Wert x gesetzt werden, plus der Position der sortierten Datensätze.
    Beispiel:
    Erster Datensatz (niedrigster Wert Sortier_mich): Mein_Feld = x + 1
    Zweiter Datensatz (zweitniedrigster Wert Sortier_mich): Mein_Feld = x + 2
    Dritter Datensatz (drittniedrigster Wert Sortier_mich): Mein_Feld = x + 3
    .
    .
    .
    Letzter Datensatz (höchster Wert Sortier_mich): Mein_Feld = x + n (also plus die Anzahl an Datensätzen)


    So...nun kommt ihr ins Spiel: wie stelle ich das an? :-) Ich nehme an, ich brauche Subselects? (Wie) Kann ich die Position eines Datensatzes innerhalb eines Sortierten Querys bestimmen?

    Natürlich ginge das per PHP ziemlich einfach. Ab einer bestimmten Zahl an Datensätzen wird das aber zu langsam...

    Ich freue mich auf eure Antworten und Lösungsvorschläge :-)

    Viele Grüße
    Breezzer

  • #2
    Sowas mit reinem SQL machen widerspricht irgendwie dem, wofür Datenbanken da sind: DatenHALTUNG.

    Was du möchtest ist eindeutig Logik und gehört in eine Programmiersprache, die die Logik verwaltet und die Daten aus der Datenbank verwendet. So wie es eben gedacht ist.

    Über wieviele Datensätze reden wir denn hier? Dass PHP zu langsam wird? (Kann ich mir kaum vorstellen, aber okay)
    This is what happens when an unstoppable force meets an immovable object.

    Kommentar


    • #3
      Auch wenn ich ApoY2k recht geben muss…

      Code:
      set @counter = 0; -- eins weniger als der Startwert, in diesem Falle 1
      
      update tabelle
      set mein_feld = x + (@counter := @counter + 1)
      oder by sortier_mich
      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        ihr habt natürlich recht, sql würde damit etwas missbraucht werden.
        aber reine statements wie "update spalte = spalte * 2" sind ja fast schon gang und gäbe - und da dachte ich, dass meine anforderung nicht so krass aus der reihe tanzen würde.

        dass php zu langsam ist, war ungünstig formuliert. eine datenbank auf einem anderen server soll angesprochen werden und die verbindung ist langsam. ein kleines statement abzuschicken wäre deshalb praktischer als viele daten von der datenbank zum server zu transportieren und dann wieder zurück.

        danke euch beiden für eure antworten.

        Kommentar

        Lädt...
        X