webForumDet fria alternativet

Lista trådar i forum

3 svar · 205 visningar · startad av Morph

MorphMedlem sedan juli 2000534 inlägg
#1

Jag håller på med ett forum med ett upplägg som wF:s. Nu har jag fått problem med sorteringen när jag hämtar huvudinläggen (parentPostID=0). Jag vill att det ska fungera som på wF, att tråden med det senaste svaret visas överst.

Alla inlägg ligger i samma tabell, kallad posts. Tabellen ser ut såhär:

postID ! int IDENTITY
forumID ! int
topic ! varchar
parentPostID ! int
postText ! varchar
authorUserID ! int
postDate ! smalldatetime
locked ! bit

Jag sökte lite och hittade den här tråden: http://www.webforum.nu/showthread.php?s=&threadid=21008&highlight=forum som hjälpte mig på vägen.

min nuvarande SQL-sats:

SELECT a.postID, a.parentPostID, a.topic, a.authorUserID, a.locked, b.postDate AS lastPostDate FROM posts AS a LEFT OUTER JOIN posts AS b ON a.postID=b.parentPostID WHERE a.forumID=1 AND a.parentPostID=0 ORDER BY b.postDate DESC

Problemet är dock att jag får flera exemplar av trådar med flera svar i retur när jag kör SQL-satsen i Query Analyzern. Finns det fem svar i en tråd får jag alltså fem rader tillbaka med samma postID. Hur ska jag lösa det?

MorphMedlem sedan juli 2000534 inlägg
#2

*bump*

Ingen som vet?

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Något så här då

SELECT a.postID, a.parentPostID, a.topic, a.authorUserID, a.locked, 
       (select max(postDate) 
          from posts 
         where parentPostid = 0
            or parentPostid = a.postId) AS lastPostDate 
FROM posts AS a  
WHERE a.forumID=1 
  AND a.parentPostID=0 
ORDER BY b.postDate DESC

Vilken userid vill du ha? Den som startade tråden eller den som skrev sista inlägget?

MorphMedlem sedan juli 2000534 inlägg
#4

Rotar fram det här igen...

LarsG, din SQL-sats gav lite konstiga resultat. Om det finns en tråd utan några svar får alla trådar den senaste postens datum och tid i lastPostDate. Det uppstod ibland problem med datumen även om alla trådar hade minst ett svar.

Har du något annat förslag? Jag har funderat mig gråhårig på det här, jag fattar inte att det ska krångla så mycket...

Vilken userid vill du ha? Den som startade tråden eller den som skrev sista inlägget?

Jag vill ha samma upplägg som på wF, dvs userID på den som startade tråden.

All hjälp välkomnas!

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)