Manu: Sortieren, aber wie?

Hallo zusammen,

ich baue grad mein selbstgebasteltes Forum um. Dort kann man neue Threads eröffnen und kommentieren (revolutionär, nicht wahr...:)

Nun frage mich gerade, wie ich Elemente sortieren könnte:
Sortiere ich nach dem Max-Datum des letzten Kommentars oder nach dem Max-Datum des letzten Topics? Oder wie könnte ich beides kombinieren, so dass möglichst immer das aktuellste Thema am Anfang der Liste steht...?

(Die Abfrage der Topics beinhaltet ein join auf die Kommentare, wo ich deren Anzahl und max(date) heraushole...)

Für Ideen offen...

Gruß,
Manu

  1. Hi,

    Nun frage mich gerade, wie ich Elemente sortieren könnte:
    Sortiere ich nach dem Max-Datum des letzten Kommentars oder nach dem Max-Datum des letzten Topics? Oder wie könnte ich beides kombinieren, so dass möglichst immer das aktuellste Thema am Anfang der Liste steht...?

    Definiere für dich selbst, was "aktuellste" bedeutet. Wenn du das weisst, dann kannst du dir die Sortierung ja dann so bauen? Wenn du nach dem Startdatum des Topics/Threads sortieren willst, solltest du dieses irgendwo gespeichert haben.

    Aber vielleicht möchtest du es auch dem Benutzer überlassen, zwischen verschiedenen Sortierungen zu wählen und bietest ihm mehrere (u.a. die von dir genannten) Möglichkeiten an?

    (Die Abfrage der Topics beinhaltet ein join auf die Kommentare, wo ich deren Anzahl und max(date) heraushole...)

    Kann sein, keine Ahnung, du hast ja nicht wirklich viel von deinem Datenmodell durchblicken lassen und ich bin zum Bleistift kein Hellseher mit Glaskugel.

    Auch was für ein Datenbanksystem du benutzt hast du bislang nicht erwähnt, danach entscheidet sich unter anderem wie einfach oder kompliziert deine Lösung sein kann.

    Ciao, Frank

    1. Hallo.

      Definiere für dich selbst, was "aktuellste" bedeutet. Wenn du das weisst, dann kannst du dir die Sortierung ja dann so bauen? Wenn du nach dem Startdatum des Topics/Threads sortieren willst, solltest du dieses irgendwo gespeichert haben.

      Das Aktuellste ist das Neueste - allerdings manchmal Topic, manchmal Comment.

      Aber vielleicht möchtest du es auch dem Benutzer überlassen, zwischen verschiedenen Sortierungen zu wählen und bietest ihm mehrere (u.a. die von dir genannten) Möglichkeiten an?

      Mach ich schon. Ich möchte aber als Voreinstellung möglichst das Aktuellste Thema oben stehen haben.

      Klar, ich sage jetzt, sortiere nach max(date) der Topics oder max(date) der Comments, aber wie ich beides kombiniere ist ja die Frage.

      Kann sein, keine Ahnung, du hast ja nicht wirklich viel von deinem Datenmodell durchblicken lassen und ich bin zum Bleistift kein Hellseher mit Glaskugel.

      Wie gesagt, ich hole schon eine Liste der Topics, inkl. max(date) der entsprechenden Comments, die in einer separaten Table stehen. Momentan sortiere ich nach dem Datum der Topics. Ohne weiteres kann ich auch nach max(date) der Comments sortieren.

      Wenn nun eine Zeit kein neues Topic eröffnet wurde, sondern nur Comments gepostet wurden, ist diese Sortierung nicht optimal.

      Auch was für ein Datenbanksystem du benutzt hast du bislang nicht erwähnt, danach entscheidet sich unter anderem wie einfach oder kompliziert deine Lösung sein kann.

      Kompliziert ist egal, es geht ja nur darum, eine Idee zu entwickeln.
      Aber wenns weiterhilft: mysql5 & pdo.

      Gruß,
      Manu

      1. Hi,

        mysql bietet eine Funktion GREATEST, mit welcher du dir aus n werten den grössten zurückgeben lassen kannst. Und danach kannst du dann sortieren?

        Ciao, Frank

  2. Yo,

    Oder wie könnte ich beides kombinieren, so dass möglichst immer das aktuellste Thema am Anfang der Liste steht...?

    für jedes thread ermittelst du mit jeweils einer korrelierten unterbafrage den maxwert von den kommentaren und den maxwert der topics und benutzt den wert, der aktueller ist.

    Ilja