Margit: MySQL- Sortierung bei Gruppiertem

Hallo,

ich habe in einem Forum folgende Datenbankabfrage:
"SELECT EntryID, ThreadID, ThreadName, UserID, EntryIcon, Date FROM forum WHERE AreaID='$fid' GROUP BY ThreadID ORDER BY EntryID DESC LIMIT $offset, 15"

Also wird nach Threads sortiert, wobei Thread, der die größte EntryID im Eröffnungsbeitrag hat, an erste Stelle gesetzt wird.
Ich möchte jetzt aber, dass der Thread, der die größte EntryID im neuesten Beitrag hat, an den Anfang gestellt wird.

Versucht habe ich bereits:
SELECT MAX(EntryID) AS EntryID, ThreadID, ThreadName, UserID, EntryIcon, Date  FROM forum  WHERE AreaID='$fid'  GROUP BY ThreadID  ORDER BY ThreadID DESC, EntryID DESC  LIMIT $offset, 15;
Geht aber nicht.

Ich hoffe, ihr versteht, was ich meine und könnt mir weiterhelfen.

MfG

  1. Halihallo

    ich habe in einem Forum folgende Datenbankabfrage:
    "SELECT EntryID, ThreadID, ThreadName, UserID, EntryIcon, Date FROM forum WHERE AreaID='$fid' GROUP BY ThreadID ORDER BY EntryID DESC LIMIT $offset, 15"

    Also wird nach Threads sortiert, wobei Thread, der die größte EntryID im Eröffnungsbeitrag hat, an erste Stelle gesetzt wird.
    Ich möchte jetzt aber, dass der Thread, der die größte EntryID im neuesten Beitrag hat, an den Anfang gestellt wird.

    Hat denn nicht _jeder_ Beitrag eine eigene unique _EntryID_? - Wie hast du das aufgebaut?

    Versucht habe ich bereits:
    SELECT MAX(EntryID) AS EntryID, ThreadID, ThreadName, UserID, EntryIcon, Date  FROM forum  WHERE AreaID='$fid'  GROUP BY ThreadID  ORDER BY ThreadID DESC, EntryID DESC  LIMIT $offset, 15;
    Geht aber nicht.

    Könntest du mal das Datenbankschema zeigen? - Besteht das aus mehreren Tabellen? - Wie ist der Zusammenhang zwischen EntryID und ThreadID, ist der Rekursiv (also kann jeder EntryID noch weitere "UnterEntryIDs" haben?) oder ein Thread einfach mehrere EntryIDs?

    Viele Grüsse

    Philipp

    PS: Bisher versteh ich das Problem noch nicht so ganz, sorry.

    1. Ja, ich glaube, du hast es nicht richtig verstanden. Wahrscheinlich habe ich mich etwas ungünstig ausgedrückt.
      Die EntryIDs sind im ganzen Forum unique.
      Das Problem ist: in der Abfrage steht ja GROUP BY ThreadID, denn mit der Abfrage wird die Übersicht über alle Threads im Unterforum (gekennzeichnet durch AreaID, hier nicht weiter wichtig) erstellt.
      Ich will nun aber so sortieren, dass der aktuellste Thread, also der mit dem aktuellsten Beitrag, nach vorne gestellt wird (und der neueste Beitrag innerhalb eines Threads ist logischerweise jener mit der höchsten EntryID).
      Denn so wie es ist, wird nach Erstellungsdatum des Threads sortiert (und der erste Beitrag innerhalb eines Threads ist jener mit der niedrigsten EntryID).

      Ich hoffe, es ist nicht noch komplizierter geworden.

      MfG

      1. Halihallo

        Ja, ich glaube, du hast es nicht richtig verstanden. Wahrscheinlich habe ich mich etwas ungünstig ausgedrückt.
        Die EntryIDs sind im ganzen Forum unique.
        Das Problem ist: in der Abfrage steht ja GROUP BY ThreadID, denn mit der Abfrage wird die Übersicht über alle Threads im Unterforum (gekennzeichnet durch AreaID, hier nicht weiter wichtig) erstellt.
        Ich will nun aber so sortieren, dass der aktuellste Thread, also der mit dem aktuellsten Beitrag, nach vorne gestellt wird (und der neueste Beitrag innerhalb eines Threads ist logischerweise jener mit der höchsten EntryID).
        Denn so wie es ist, wird nach Erstellungsdatum des Threads sortiert (und der erste Beitrag innerhalb eines Threads ist jener mit der niedrigsten EntryID).

        du hattest die Lösung IMHO schon fast selber gefunden, nur hast du nicht richtig sortieren lassen:

        SELECT MAX(EntryID) AS EntryID, ThreadID, ThreadName, UserID, EntryIcon, Date  FROM forum  WHERE AreaID='$fid'  GROUP BY ThreadID  ORDER BY EntryID DESC, ThreadID DESC  LIMIT $offset, 15;
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^

        versuch's mal damit. Du musst zuerst nach EntryID und danach nach ThreadID sortieren lassen... Gruppiert wird ja eh nach ThreadID, also spielt's keine Rolle, wenn du erst nach EntryID nach ThreadID sortierst, jedoch wird dann wirklich der Thread am ersten ausgegeben, der die _grösste_ EntryID hat. Hoffe das war das Problem.

        Ich hoffe, es ist nicht noch komplizierter geworden.

        Wenns nach einer Antwort auf eine Frage noch komplizierter wird, heisst die Wissenschaft meistens Quantenmechanik ;)

        Viele Grüsse

        Philipp

        1. Hi,

          ich hätte vielleicht erwähnen sollen, dass ich dies auch schon ausprobiert habe. Es funktioniert leider aber auch nicht.

          MfG
          Margit