webForumDet fria alternativet

Visa senaste inlägg i en tråd?

ASP

8 svar · 297 visningar · startad av jimpa

Medlem sedan jan. 2001361 inlägg
Frågan#1

Hej,

Jag använder denna sql för att lista trådar i ett forum

strSQL = "SELECT Threads.ThreadID, Threads.tUserID, Threads.tViews, Threads.tSticky, Threads.tActive, Threads.tDate, tSubject, "
strSQL = strSQL & "Count(Posts.PostID) as cPost, Posts.pDate, "
strSQL = strSQL & "Users.UserID, Users.uName "
strSQL = strSQL & "FROM ((Threads "
strSQL = strSQL & "LEFT JOIN Posts "
strSQL = strSQL & "ON Threads.ThreadID = Posts.pThreadID) "
strSQL = strSQL & "LEFT JOIN Users "
strSQL = strSQL & "ON Threads.tUserID = Users.UserID) "
strSQL = strSQL & "WHERE Threads.tForumID = " & Request("ForumID") & " "
strSQL = strSQL & "GROUP BY Threads.ThreadID, Threads.tUserID, Threads.tViews, Threads.tSticky, Threads.tActive, Threads.tDate, tSubject, "
strSQL = strSQL & "Posts.pDate, "
strSQL = strSQL & "Users.UserID, Users.uName "
strSQL = strSQL & "ORDER BY Posts.pDate DESC, Threads.tDate DESC"

Jag får följande resultat:
---
Thread subject : Started by : Replies : Views
---
Min fråga är då hur kan jag även få med vem som har skapat det sista inlägget i varje tråd? vill alltså att det skrivs ut så här:
----
Thread subject : Started by : Replies : Views : Last post by
----

Mvh Jimpa

Medlem sedan jan. 2001361 inlägg
#2

Nu blir jag förvirrad!
Förut tyckte jag att sql-satsen funkade som jag ville men nu tycker jag att mina "count" räknar fel :O
Någon som ser om jag gör något fel!?

Medlem sedan jan. 2001361 inlägg
#3

Jag löste problemet med felräkningen genom att skriva så här

strSQL = "SELECT Threads.ThreadID, Threads.tUserID, Threads.tViews, Threads.tSticky, Threads.tActive, Threads.tDate, Threads.tSubject, "
strSQL = strSQL & "(select Count(*) from Replies where Replies.rThreadID = Threads.ThreadID) as cReplies, "
strSQL = strSQL & "Replies.rDate, "
strSQL = strSQL & "Users.UserID, Users.uName "
strSQL = strSQL & "FROM ((Threads "
strSQL = strSQL & "LEFT JOIN Replies "
strSQL = strSQL & "ON Threads.ThreadID = Replies.rThreadID) "
strSQL = strSQL & "LEFT JOIN Users "
strSQL = strSQL & "ON Threads.tUserID = Users.UserID) "
strSQL = strSQL & "WHERE Threads.tForumID = " & Request("ForumID") & " "
strSQL = strSQL & "ORDER BY Replies.rDate DESC, Threads.tDate DESC"

:D
Men mitt problem hur jag kan få fram namnet på den användaren som har postat senaste inlägget har jag dock inte löst! Vill alltså fram det så här
---
Thread subject : Started by : Replies : Views : Last post by
--

Någon som vet?

Medlem sedan jan. 2001361 inlägg
#4

Jag vet att detta är extremt kompliserat men det måste väl finnas någon som har ett förslag?

Medlem sedan juni 200032 967 inlägg
#5

Du får joina in användartabellen en gång till och hämta sistepostarens namn därifrån.

Medlem sedan jan. 2001361 inlägg
#6

hmm.. Men hur skiljer jag på "Users.uName" andra gången då? Jag menar jag hämtar ju värden på trådskaparen genom "objRS("uName")" hur hämtar jag namnet andra gången?

Medlem sedan juni 200032 967 inlägg
#7

När du joinar in användartabellen den andra gången sätter du ett alias på tabellen. Sätt sedan ett alias även på användarnamnet när du hämtar det.

Medlem sedan jan. 2001361 inlägg
#8

:OO Har du något exempel på hur det skulle se ut? den ser ut så här nu:

 strSQL = "SELECT Threads.ThreadID, Threads.tUserID, Threads.tViews, Threads.tSticky, Threads.tDate, Threads.tSubject, "
strSQL = strSQL & "(select Count(*) from Replies where Replies.rThreadID = Threads.ThreadID) as cReplies, "
strSQL = strSQL & "Replies.rDate, "
strSQL = strSQL & "Users.UserID, Users.uName "
strSQL = strSQL & "FROM ((Threads "
strSQL = strSQL & "LEFT JOIN Replies "
strSQL = strSQL & "ON Threads.ThreadID = Replies.rThreadID) "
strSQL = strSQL & "LEFT JOIN Users "
strSQL = strSQL & "ON Threads.tUserID = Users.UserID) "
strSQL = strSQL & "WHERE Threads.tForumID = " & Request("ForumID") & " "
strSQL = strSQL & "ORDER BY Replies.rDate DESC, Threads.tDate DESC"
Medlem sedan jan. 2001361 inlägg
#9

Jag löste det så här :)

strSQL = "SELECT Threads.ThreadID, Threads.tUserID, Threads.tViews, Threads.tSticky, Threads.tDate, Threads.tSubject, "
strSQL = strSQL & "(select Count(*) from Replies where Replies.rThreadID = Threads.ThreadID) as cReplies, "
strSQL = strSQL & "Replies.rDate, "
strSQL = strSQL & "Users.UserID, Users.uName, "
strSQL = strSQL & "lastUser.UserID as lastUserID, lastUser.uName as lastUserName "
strSQL = strSQL & "FROM (((Threads "
strSQL = strSQL & "LEFT JOIN Replies "
strSQL = strSQL & "ON Threads.ThreadID = Replies.rThreadID) "
strSQL = strSQL & "LEFT JOIN Users "
strSQL = strSQL & "ON Threads.tUserID = Users.UserID) "
strSQL = strSQL & "LEFT JOIN Users as lastUser "
strSQL = strSQL & "ON Replies.rUserID = lastUser.UserID) "
strSQL = strSQL & "WHERE Threads.tForumID = " & Request("ForumID") & " "
strSQL = strSQL & "ORDER BY Replies.rDate DESC, Threads.tDate DESC"
264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)