12. juli 2002 - 12:04Der er
12 kommentarer og 1 løsning
Group By - Order By
Er sikker på andre også har haft dette problem.
Jeg skal skrive de 10 nyeste indlæg ud, men fra unikke brugere. Den samme bruger må altså ikke være mellem de 10 mere end en gang. Det klassiske "Group By og Order By sammen" problem.
Ville se ud som følger, hvis man kunne gøre det sådan :]
Sql = "SELECT * FROM forum_posts WHERE forumid='1' GROUP BY userid ORDER BY time_made DESC LIMIT 10"
SELECT userid, felt2, felt3, felt4, MAX(time_made) time_made FROM forum_posts WHERE forumid='1' GROUP BY userid ORDER BY time_made DESC LIMIT 10
Så får du den unikke række med størst time_made.. Altså hvis jeg har skrevet 3 indlæg hvor 2 af dem er blandt de 10 nyeste så får du kun mit nyeste
Tror også du kan bruge din * ;-) : SELECT *, MAX(time_made) time_made FROM forum_posts WHERE forumid='1' GROUP BY userid ORDER BY time_made DESC LIMIT 10
SELECT * FROM forum_posts WHERE forumid='1' AND time_made = (SELECT MAX(time_made) FROM forum_posts p2 WHERE p2.userid = userid) GROUP BY userid ORDER BY time_made DESC LIMIT 10
PS. Det er en god ide at sortere efter en auto_increment-kolonne i stedet for et timestamp ;-) Så er du 100% sikker på at det er sorteret efter seneste!
Synes godt om
Ny brugerNybegynder
Din løsning...
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.