Hmm... Lyckas inte lösa det här själv.
Håller på med en sql-fråga för att hämta alla forum i databasen, men den hämtar alla forum lika många gånger som det finns trådar i forumet och det vill jag ju självklart inte.
Har försökt få nån distinct på det men inte lyckats få det rätt.
Kanske nån av er som vet hur det skall lösas.
SELECT f.senastesvarav, f.senastesvar, fl.ForumId,
fl.ForumNamn, fl.Information, fl.moderator, u.username
FROM ForumLista AS fl, UserInfo AS u, Forum AS f
WHERE fl.moderator = u.username and
f.forumid = fl.forumid and f.svarsid is null
ORDER BY fl.Forumnamn ASC, f.senastesvar DESC;
Ja, jag tror det skulle underlätta om man visste hur tabellerna ser ut. Vill du ha ut alla kolumner ur tabellerna eller bara vissa? Jag är inte säker på att jag fattar vad du vill ha fram, för alla forum borde du väl hitta med:
Jo men jag skall nämligen skriva ut lite andra saker också, typ vem som är moderator, vem som har gjort senaste svaret osv...
Forumlista:
forumid, forumnamn, information, moderator
Forum:
Id, forumid(vilket forum tråden/svaret tillhör), rubrik, text, userid(vem som skapat tråden/svaret), datum, svarsid(vilken tråd ett svar tillhör), SenasteSvar(datumet då senaste svaret skapades), SenasteSvarAv(användar idet för den som senast svarade)
UserInfo:
Userid, Username, password, mail, info, status(medlem, moderator osv)
Förstår fortfarande inte: Varför vill du skriva ut moderatorinfon dubbelt?
SELECT .... fl.moderator, u.username
FROM ForumLista AS fl, UserInfo AS u, Forum AS f
WHERE fl.moderator = u.username and ...
Alltså fl.moderator = u.username så samma sak skrivs ut dubbelt. Varför? :q
Bättre med:
SELECT f.senastesvarav, f.senastesvar, fl.ForumId,
fl.ForumNamn, fl.Information, fl.moderator
FROM ForumLista AS fl, Forum AS f
WHERE f.forumid = fl.forumid and f.svarsid is null
ORDER BY fl.Forumnamn ASC, f.senastesvar DESC;
Det är en fördel för den typen av frågor klarar inte Mysql av men det går utmärkt i Access.
SELECT (select senastesvarav from forum f
where forumid = fl.forumid
and senastesvar = (select max(senastesvar)
from forum where forumid = f.forumid ),
(select max(senastesvar) from forum
where forumid = fl.forumid),
ForumId,
ForumNamn,
Information,
moderator
FROM ForumLista AS fl
ORDER BY Forumnamn ASC
Feltyp:
Microsoft JET Database Engine (0x80040E14)
Missing ), ], or Item in query expression '(select senastesvarav from forum f where forumid = fl.forumid and senastesvar = (select max(senastesvar) from forum where forumid = f.forumid ), (select max(senastesvar) from forum where forumid = fl.forumid), ForumId, ForumNamn, Information, Moderator FR'.
Jaha, det saknas en parentes. Det är väl inte så svårt att se var?
SELECT (select senastesvarav from forum f
where forumid = fl.forumid
and senastesvar = (select max(senastesvar)
from forum where forumid = f.forumid )),
Du kan använda rs(0) etc eller så namnger du värdet i frågan
SELECT (select senastesvarav from forum f
where forumid = fl.forumid
and senastesvar = (select max(senastesvar)
from forum where forumid = f.forumid )) as xxx,
Ok, men nu tror jag allt att jag har rört tilld et för mig...
Jag är aldeless för seg i skallen för att kunna lösa det här själv nu. Hoppas att du har lust att hjälpa till lite..
Finns det nåt enklare sätt att lösa det här på:
Query ="SELECT (select senastesvarav from forum f where forumid = fl.forumid and senastesvar = (select max(senastesvar) "&_
"from forum where forumid = f.forumid )), (select max(senastesvar) from forum where forumid = fl.forumid), "&_
"ForumId, ForumNamn, Information, Moderator FROM ForumLista AS fl ORDER BY Forumnamn ASC"
Set rs = Connect.Execute(Trim(Query))
If not rs.eof Then
Response.write "<div align=left>"&_
"<table border=0 cellpadding=5 cellspacing=0 style=border-collapse: collapse bordercolor=#111111 width=100% id=AutoNumber1>"&_
"<tr>"&_
"<td valign=top width=""40%"" hight=10>ForumNamn:</td>"&_
"<td valign=top width=""20%"" hight=10>Antal inlägg:</td>"&_
"<td valign=top width=""13%"" hight=10>Moderator:</td>"&_
"<td valign=top width=""22%"" hight=10>Senaste svar:</td>"&_
"</tr>"
While not rs.Eof
Senastid = rs(0)
forumid = rs("forumid")
Set rs2 = Connect.Execute("SELECT u.username, u.userid, f.forumid, fl.forumid "&_
"from Userinfo as u, forumlista as fl, forum as f "&_
"where u.userid = "& senastid &" and f.forumid = fl.forumid and f.svarsid is null;")
arr = rs2.GetRows()
strSenasteSvarAv = arr(0,0)
rs2.close : set rs2 = nothing
set Count = Connect.execute("select count(*) from forum where forumid = "& ForumId &";")
iCount = Count(0)
Count.close : Set Count = nothing
Response.write "<tr>"
Response.write "<td valign=top width=""40%"" hight=10><a href=?cat=forum&forumId="& forumid &"><b>"& rs("ForumNamn") &"</b></a><br>"& rs("information") &"</td>"
Response.write "<td valign=top width=""20%"" hight=10>"& iCount &"</td>"
Response.write "<td valign=top width=""13%"" hight=10>"& rs("moderator") &"</td>"
Response.write "<td valign=top width=""22%"" hight=10>"& strSenasteSvarAv &":<br>"& rs("SenasteSvar") &"</td>"
Response.write "</tr>"
rs.movenext
Wend
Response.write "</tr></table>"
rs.close : set rs = Nothing
End if
får nämligen:
Feltyp:
ADODB.Recordset (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/mikul/forum.asp, line 146
på den här queryn:
Set rs2 = Connect.Execute("SELECT u.username, u.userid, f.forumid, fl.forumid "&_
"from Userinfo as u, forumlista as fl, forum as f "&_
"where u.userid = "& senastid &" and f.forumid = fl.forumid and f.svarsid is null;")