Veröffentlicht 2. Januar 200718 j 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
2. Januar 200718 j 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
3. Januar 200718 j 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
3. Januar 200718 j 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]
5. Januar 200718 j 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
6. Januar 200718 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.