10. juli 2007 - 00:03Der er
13 kommentarer og 1 løsning
Order by last reply
Hej Eksperter,
Jeg vil gerne have have lavet en query som sorterer forum-tråde efter sidste aktivitet.
Jeg har så fået lavet(af en anden) dette: SELECT thread.* FROM thread LEFT JOIN comment ON thread.id=comment .cid WHERE thread.sid=" . $sid . " AND thread.type='article' AND(thread.gkarma/thread.bkarma) > 1.5 AND thread.karmanums > 5 GROUP BY thread.id ORDER BY comment.dated DESC
Det virker også fint, indtil tråden har 1 kommentar, så ryger den ikke op ad listen mere. Dvs. når en tråd med 0 kommentarer bliver kommenteret, ryger den op ad listen, men har den 1 kommentar og bliver kommenteret, bliver den på sin plads.
Og det ville også være rart hvis en helt ny tråd bliver smidt øverst på listen.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Det er fordi, det felt der sorteres på er null, indtil der oprettes en kommentar. Du kan tildele et sådant felt en dummy værdi, f.eks. en fast dato langt ude i fremtiden, NOW(), CURRENT_TIMESTAMP(), UNIX_TIMESTAMP(), eller hvad der nu passer til dit system:
SELECT thread.*, MAX(comment.dated) AS SenesteKommentar FROM thread LEFT JOIN comment ON thread.id=comment .cid WHERE thread.sid=" . $sid . " AND thread.type='article' AND(thread.gkarma/thread.bkarma) > 1.5 AND thread.karmanums > 5 GROUP BY thread.id ORDER BY COALESCE(SenesteKommentar, thread.dated) DESC
Mærkeligt! - men okay, så prøver vi med en nested forespørgsel:
SELECT * FROM ( SELECT thread.*, MAX(comment.dated) AS SenesteKommentar FROM thread LEFT JOIN comment ON thread.id=comment .cid WHERE thread.sid=" . $sid . " AND thread.type='article' AND(thread.gkarma/thread.bkarma) > 1.5 AND thread.karmanums > 5 GROUP BY thread.id ) AS tmp ORDER BY COALESCE(SenesteKommentar, dated) DESC
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.