Schmiddi Geschrieben 2. Januar 2007 Geschrieben 2. Januar 2007 Hallo, ich habe ein Forum mit folgenden Tabellen: forum_threads #################################################### # ID # Titel # Message # Poster # CreateDate # Hits# # # # # # # # # # # # # # # #################################################### [/PHP] forum_antworten [PHP] ###################################################### # ID # ThreadID# Message # Poster # CreateDate # Hits# # # # # # # # # # # # # # # ###################################################### Jetzt sollen die Threads bei der Ausgabe nach dem Datum der neuesten Antwort sortiert werden. Hat jemand eine Ahnung, wie ich das machen kann? Gruß, Andreas
Amstelchen Geschrieben 2. Januar 2007 Geschrieben 2. Januar 2007 je nach DBMS (mysql? *rat*), ein JOIN auf forum_threads.ID und forum_antworten.ID und ein ORDER BY forum_antworten.CreateDate (neueste antwort, dann halt noch DESC, absteigend sortiert). s'Amstel
Schmiddi Geschrieben 3. Januar 2007 Autor Geschrieben 3. Januar 2007 Hallo, sorry hatte vergessen zu sagen dass es sich um MySQL handelt Also ich hab das mal ohne JOIN gemacht, aber bin der Lösung schon ziemlich nahe: SELECT a.ID, a.ThreadID, a.Poster, max(a.CreateDate) as foo, t.ID, t.Titel, t.Poster, t.CreateDate FROM forum_antworten a, forum_threads t WHERE a.ThreadID=t.ID GROUP BY t.Titel ORDER BY foo DESC [/PHP] Das listet mir die Threads sortiert nach der neuesten Antwort auf. Allerdings nur die Threads, für die schon eine Antwort existiert! Wie bekomm ich jetzt die andren Threads mit deren Erstellungsdatum auch noch in die Sortierung? Danke! Gruß, Andreas
Schmiddi Geschrieben 3. Januar 2007 Autor Geschrieben 3. Januar 2007 Hier hab ich dasselbe nochmal mit dem JOIN, allerdings hab ich noch immer keine Ahnung wie ich die Threads ohne Antworten da mit reinbekomme? SELECT t.Titel, max( a.CreateDate ) AS Datum FROM forum_antworten a INNER JOIN forum_threads t ON t.ID = a.ThreadID GROUP BY t.Titel ORDER BY Datum DESC [/PHP]
Monty82 Geschrieben 5. Januar 2007 Geschrieben 5. Januar 2007 SELECT t.Titel, IFNULL(max(a.CreateDate),t.CreateDate) AS Datum FROM forum_threads AS t LEFT JOIN forum_antworten AS a ON a.ThreadID=t.ID GROUP BY t.ID ORDER BY Datum DESC
DiHo Geschrieben 6. Januar 2007 Geschrieben 6. Januar 2007 Hi, um Redundanz zu verhindern solltest du im Forum Thread lediglich den Titel des Threads speichern, den Rest kannst du im Antworten-Thread speichern. Zum einen kann es ja sein, daß du z.B. den ersten post eines Themas löschen willst und dann ist gleich das ganze Thema gekilled (obwohl vielleicht einzelne Antworten recht gut waren). So würdest du auch die Thread-Tabelle kleiner halten. Nur so als Tipp. Gruß, DiHo
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden