hej
Har ett enkelt forum som baseras på en SQL 2005 Server-databas med en tabell som ser ut så här, något förenklat:
Tabellnamn: posts
id | int
postdate |datetime
subject | nvarchar
body | text
parentpost_id | int
Trådar och svar på trådar sparas i denna tabell. Svaren kopplas ihop med rätt tråd med hjälp av parentpost_id-fältet.
Jag vill nu lista trådarna sorterade i datumordning, baserat på senaste svaret i tråden, eller om det inte finns något svar på datumet tråden skapades. Men jag får det inte att fungera. Så här ser min SELECT ut:
SELECT p1.postdate, p1.subject,
(SELECT TOP 1 postdate FROM posts p2 WHERE p2.parentpost_id = p1.id ORDER BY postdate DESC) AS replydate
FROM posts p1
WHERE parentpost_id IS NULL
ORDER BY replydate DESC, postdate DESC
Problemet har att göra med att trådar som ännu inte har några svar hamnar sist i resultatet, eftersom replydate är NULL för dessa trådar. Jag vill ju att den skall sortera efter replydate och postdate kombinerat. Någon som förstår vad jag är ute efter, och vad problemet är?
Så här blir sortingen:
postdate | replydate
2007-01-17 | 2007-01-18
2007-01-16 | 2007-01-15
2007-01-21 | NULL <-- Denna tråd har ännu inga svar
Men jag vill att den skall sortera så här:
postdate | replydate
2007-01-21 | NULL
2007-01-17 | 2007-01-18
2007-01-16 | 2007-01-15