[SQL] Logischer Ansatz gesucht: Reihenfolge

Dieses Thema im Forum "Webentwicklung" wurde erstellt von myth2806, 21. September 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 21. September 2009
    Logischer Ansatz gesucht: Reihenfolge

    Hey,

    also ich bräuchte mal einen kleinen Denkansatz.
    Und zwar geht es mit darum, eine Reihenfolge für eine Reihe von Datensätzen zu bestimmen, die sich aber beliebig ändern soll. Es kann also beliebig viele Datensätze geben, die sich beliebig oft in der Reihenfolge vertauschen lassen sollen.
    Wie realisiere ich sowas am besten mit MySQL / PHP?

    Grüße

    //edit:
    Code:
    Ein Beispiel könnte eine Bildergalerie sein, von der die Reihenfolge der Bilder gespeichert werden soll.
    Die Tabelle könnte dann die Spalten "id", "datei", "beschreibung", "reihenfolge" haben
    
     
  2. 21. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    Könntest du ein kleines Beispiel dazu geben? Dann kann man sich das besser vorstellen. Hab deinen Sachverhalt jetzt hoffentlich richtig verstanden:

    Du könntest die Datensätze mit PHP in deine gewünschte Reihenfolge bringen und dann in die DB schreiben. Willst du die Einträge nachträglich ändern, liest du die gewünschten Einträge wieder aus, speicherst sie in PHP zwischen, löscht sie aus der DB, sortierst sie neu und trägst sie wieder ein.

    Müssen die Daten denn unbedingt in der Datenbank verschoben werden? Kann die neue Sortierung nicht über einen fixen Datenbestand mittels PHP erfolgen?
     
  3. 21. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    Also du hast das offensichtlich schon richtig verstanden und was du sagst wäre auch eine Möglichkeit. Ich hatte halt gehofft, dass es irgendeine einfachere Möglichkeit, vielleicht von MySQL selbst, gibt.
    Ich könnte mir halt vorstellen, dass man oft vor diesem Problem steht.

    Ein Beispiel könnte eine Bildergalerie sein, von der die Reihenfolge der Bilder gespeichert werden soll.
    Die Tabelle könnte dann die Spalten "id", "datei", "beschreibung", "reihenfolge" haben

    Danke aber schonmal
     
  4. 21. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    Ja ein Beispiel wäre echt gut...
    Würde beispielsweise auch ein Datumsfeld gehen?
     
  5. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    hi,

    du kannst mit zwei tabellen alles regeln.
    in einer stehen deine informationen, bilder, texte, was weiß ich.
    in der anderen wird die reihenfolge festgehalten, die auf die id
    von tabelle 1 verweist.
     
  6. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    und was soll das deiner meinung nach bringen, außer overhead zu produzieren?! :angry:
    die reihenfolge ist atomar und braucht von der logik her nicht ausgegliedert zu werden.

    das problem vom thread-ersteller ist, dass er eine möglichkeit sucht die sortierte reihenfolge in seiner datenbank abzuspeichern.

    Mr Mustache hat schon den richtigen Ansatz geliefert, auch wenn etwas zu kompliziert...
    gelöscht werden muss nämlich nix, ein simples update reicht um die reihenfolge zu ändern.
    im prinzip gehst du mit einer while-schleife von php durch deine sammlung von bildern und setzt ein sql-statement "UPDATE tabelle SET reihenfolge = 'x' WHERE id = 'id';";
    das ganze kann natürlich als rekursive funktion aufgebaut werden, aber das nur am rande des themas.
    ansonsten bietet mysql keine eigene methode oder logik an, um sowas zu verwalten.
     
  7. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    @SinErgy
    ich geb dir dabei vollkommen recht.

    nur ist das ein kleines beispiel was der thread-ersteller angibt.
    was ist jedoch wenn er was ganz anderes vor hat.
    wie z.b. eine navigationsstruktur mit mehreren sprachen,
    oder eine verknüpfung untereinander (bild N kommt in 1 und 10 vor).

    ich würde die reihenfolge auslagern.
     
  8. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    Hey,
    danke leute.
    Eigendlich ging es mir eher um die Logik des Sortierens an sich als um das abspeichern der Reihenfolge in einer DB. Das ist natürlich kein Problem
    Ich dachte halt es gäbe irgendein fertigen Algorythmus um eine Reihenfolge zu generieren, zu verändern und einzelne Teile wieder zu löschen ohne das Lücken entstehen.
    Ich fürchte einfach wenn ich mir da selbst was ausdenke, wird das ganze fehleranfällig werden.
     
  9. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    die logik ist gut
    Nested Sets – Verschachtelte Bäume mit MySQL - Arne Klempert
     
  10. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    fallabhängig würde ich dann sagen

    die logik ist einfach : i = i + 1 oder i++ (je nach schreibweise ^^), wobei i dein startindex ist der an eine id gekoppelt ist.
     
  11. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    nanana, kein grund ihn anzumeckern, gibt immer verschiedene lösungsansätze und bei der vagen beschreibung des TE sowieso...

    2 tabellen sind durchaus logisch, vorallem wenn du mehrere sortierungen speichern willst wie z.b. user können sich selber aus einem bestand von bildern selber welche aussuchen und diese manuell sortieren. dann haste in deiner 2ten tabelle z.b. ne userid, bildid und sortid (und da kannste dann noch nen unique auf alle 3 setzen um fehler zu vermeiden). Ist übrigens sogar mit der sauberste Ansatz da du die andere 'bild' tabelle einfach in ruhe lässt und einfach ohne probleme weiter befüllen kannst.

    und ohne mit updates arbeiten zu müssen, kannst du auch über sql tabellen erstellen und diese temporär mit der neuen sortierung füllen, und dann die alte löschen + neue umbenennen. wenn du dann noch mit zeitstempel im tabellennamen arbeitest kannst du so ganz einfach rotieren und immer den alten stand behalten.

    und eine logische durchnumerierung lässt u.U. auch mit simplen auto increments verhindern - sofern es für deine zwecke denn angebracht ist.



    aber mal nen ganz anderer ansatz:
    warum nicht einfach order by <deineFunktion> benutzen ;-)?

    achja, wenn der overhead (speicherplatz) das problem ist, ist ne while mit nem andauernden update auch nicht zu empfehlen ;-)
     
  12. 22. September 2009
    AW: Logischer Ansatz gesucht: Reihenfolge

    war ja nicht als mecker gedacht, einfach bissl skeptische nachfrage

    deine lösung macht durchaus sinn, wenn man mehr mit den tabellen und informationen machen möchte, wo z.B. 4 identische ids jeweils andere sprachen repräsentieren und man mit einer zuordnungstabelle diese verknüpft / erweitert.

    du hast es aber richtig erkannt, die anforderung des erstellers ist durchaus schwammig und lässt viele lösungen zu. viele wege führen bekanntlich nach rom.
    manche lösung sind halt nur oversized, man kann ne flasche wasser schließlich im gepäckträger eines fahrads transportieren oder hinten in nen 40 tonner schmeißen, beide würden ihr ziel erreichen, nur zu welchen kosten und nutzen

    aber das ist nicht der knackpunkt der geschichte, denn der ersteller fragt nicht nach der besten normalform einer möglichen tabelle sondern der art der logik wie diese simpel zu realisieren ist.

    btw.: man muss es nicht mit einer while schleife machen, ein einziges update-sql-statement mit der phrase "tabellenfeld = (tabellenfeld + 1) ersetzt zum beispiel diese.
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.