J jimpa Medlem sedan jan. 2001 361 inlägg Frågan 11 sep. 2004 08:17 #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
J jimpa Medlem sedan jan. 2001 361 inlägg 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!?
J jimpa Medlem sedan jan. 2001 361 inlägg 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?
J jimpa Medlem sedan jan. 2001 361 inlägg Jag vet att detta är extremt kompliserat men det måste väl finnas någon som har ett förslag?
@nders Medlem sedan juni 2000 32 967 inlägg Du får joina in användartabellen en gång till och hämta sistepostarens namn därifrån.
J jimpa Medlem sedan jan. 2001 361 inlägg 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?
@nders Medlem sedan juni 2000 32 967 inlägg 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.
J jimpa Medlem sedan jan. 2001 361 inlägg :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"
J jimpa Medlem sedan jan. 2001 361 inlägg 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"