SELECT TOP 1 kolumn, kolumn FROM tabell ORDER BY kolumn DESC;
Eller...
SELECT kolumn, kolumn TOP 1 FROM tabell ORDER BY kolumn DESC;
För kör jag det första (som jag trodde var rätt) får jag syntaxfel som svar, kör jag det andra funakr sidan, men den verkar inte plocka ut rätt grejjer...
Ok., Du vill alltså när du tar bort ett svar så skall den ta bort värdet i kolumnen senaste_svar_namn och senaste_svar_datum, för att sedan uppdatera detta med rätt värde.
Antingen samma värde som tidigare eller ett nytt, om du nu råkade ta bort det senaste svaret.
Så söker du helt enkelt upp det senaste svaret för tråden med detta ID.
set rs1 = "SELECT TOP 1 Skribent, Datum FROM tbl_forum_sv WHERE answer_id = "& ditt_trådid
if rs1.eof then
' Finns inget svar. Hantera detta genom att sätta trådskaparen som senaste_svar_namn och dess datum
else
conn.execute("UPDATE tbl_forum_subj SET senaste_svar_namn = '"& rs1("Skribent") &"', senaste_svar_datum = '"& rs1("datum")&"' ")
end if
Sen till nästa problem när du skall skriva ut altt så är det lättare att göra allt med en enda fråga.
Set oRec = Server.CreateObject("ADODB.Recordset")
strSQL= "SELECT titel, skribent, datum, senaste_svar_namn, senaste_svar_datum FROM tbl_forum_subj ORDER BY datum"
oRec.Open strSQL, oConn, 1, 3
do until oRec.Eof
response.write oRec("Titel") & oRec("Skribent") & oRec("senaste_svar_skribent") & oRec("senaste_svar_datum") & "<br />"
oRec.MoveNext
Loop
När du börjar blanda in flera frågor så behövs detta bara när du måste hämta ut ytterligare information från andra tabeller.
Eftersom ditt första problem verkade gälla uppdateringen i subject-tabellen med senaste_svar-informationen så utgår jag från att du inte behöver hämta den informationen från svarstabellen.
cyprys: han hämtar från två rabeller i dagsläget så han lär behöva en join.
Däremot borde väl iofs lösningen vara att skippa de kolumnerna och hämta på så sätt som i den andra tråden.
Men kan vi enas om då att skippa den adnra tråden så tar vi allt här istä'llet, för jag har fortf. inte kommit fdram till ngn lösning, så allt som kan få ordning på detta är välkommet.
[b]tbl_forum_subj[/b] (Tabellen för Ämnen)
ID - Räknare
Datum - Datum
Skribent - Text
Amne - Text
Inlagg - PM
Antal_Svar - Tal
Forum_ID - Text
Ipadress - Text
Senaste_Svar - Datum
Senaste_Svar_Namn -- Text
[b]tbl_forum_sv[/b] (Svaren)
ID - Räknare
Datum - Datum
Skribent - Text
Svar_ID - Tal
Inlagg - PM
Forum_ID - Text
Ipadress - Text
Det här är min tabellstruktur.
Ni som inte förstått, det jag vill är att skippa "Senaste_Svar" och "Senaste_Svar_Namn" i den FÖRSTa tabellen (tbl_forum_subj) för att istället plocka ut dessa data i min loop mha SQLfrågor och inget mer.
Så behöver alltså ngt som varje gång sidan laddas plockar ut SENASTE DATUM och SKRIBENT FÖR VARJE ENSKILD TRÅD.
Som jag sagt tidigare, kolla http://MickeA.dynDNS.org/Ec =>Ec-Programmet => Öppet Forum så fattar ni njog vad jag menar, gör ni inte det, SKRIV ETT SVAR på en tråd, gå tillbaka till sidan där alla trådar listas upp och kolla där på "Senaste Inlägg", så hajjar ni garanterat.
Set Rs = connection.execute("SELECT t1.Amne, t1.ID, t1.skribent as skapare, t2.Skribent as svarare, t2.Datum as svarsdatum FROM tbl_forum_subj as t1 LEFT join tbl_forum_sv as t2 ON t1.ID = t2.Svar_ID ORDER BY t1.Datum DESC, t2.Datum DESC")
do until rs.eof
response.write Rs("Amne") & " " & RS("ID") & " " & Rs("Skapare") & " " & Rs("Svarare") & " " & Rs("Svarsdatum") & "<br />"
rs.MoveNext
Loop
Var dock beredd på att hantera rs("svarare & svarsdatum") som nullvärden ifall inget svar finns på tråden.
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] SELECT-uttrycket innehåller ett reserverat ord eller argument som antingen är felstavat eller utelämnat, eller så är skiljetecknen felaktigt använda.
/ec/script/forum/fritt/ladda_amne.asp, line 42
Webbläsare:
Min Kod som jag klistade in härifrån:
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/forum_db.mdb"))
'___________________________________________________________
nextPage = TRIM( Request.Querystring( "nextPage" ) )
IF nextPage = "" THEN nextPage = 1
'___________________________________________________________
SQL = "SELECT ID, Skribent, Amne," & _
"(SELECT TOP 1 Skribent FROM tbl_forum_sv WHERE tbl_forum_sv.Svar_ID = t1.ID ORDER BY Datum DESC) as Senaste_Skribent," & _
"(SELECT TOP 1 Datum FROM tbl_forum_sv WHERE tbl_forum_sv.Svar_ID = t1.ID ORDER BY Datum DESC) as Senaste_Datum" & _
"(SELECT count(ID) as antal FROM tbl_forum_sv WHERE tbl_forum_sv.Svar_ID = t1.ID) as Antal_svar" & _
"FROM tbl_forum_subj as t1" & _
"ORDER BY t1.ID DESC;"
Set oRec = oConn.execute(SQL)
%>
<table width='100%' border='0' height='10'>
<tr><td height='10' width='50%' align='left' bgcolor='#FCFDCD'><b><u>Tråd</u></b></td><td width='20%' align='center' bgcolor='#FCFDCD'><b><u>Startad Av</u></b></td><td width='10%' align='center' bgcolor='#FCFDCD'><b><u>Svar</b></u></td><td width='20%' align='center' bgcolor='#FCFDCD'><b><u>Senaste Inlägg</u></b></td></tr>
<%
oRec.PageSize = 15 '<-- Här bestämmer du hur många inlägg det ska finnas på sidan
oRec.AbsolutePage = nextPage
Do until oRec.EOF OR rowCount = oRec.PageSize
rowCount = rowCount + 1
Response.Write("<tr><td height='10' width='50%' align='left'><font face='verdana' color='#000000' size='2'><a href='ladda_trad.asp?id=" & oRec("ID") & "'>" & oRec("Amne") & "</a></td><td width='20%' align='center' bgcolor='#FCFDCD'>" & oRec("Skribent") & "</td><td width='10%' align='center'>" & oRec("Antal_Svar") & "</td><td width='20%' align='right' bgcolor='#FCFDCD'></font><font face='verdana' color='#000000' size='1'>" & oRec2("Senaste_Datum") & "<br>Av: " & oRec2("Senaste_Skribent") & "</font></td></tr><tr><td colspan='4' width='100%' height='5'></td></tr>")
oRec.MoveNext
Loop
' Rätt
SQL = "SELECT ID, Skribent, Amne, " & _
"(SELECT TOP 1 Skribent FROM tbl_forum_sv WHERE tbl_forum_sv.Svar_ID = t1.ID ORDER BY Datum DESC) as Senaste_Skribent, " & _
"(SELECT TOP 1 Datum FROM tbl_forum_sv WHERE tbl_forum_sv.Svar_ID = t1.ID ORDER BY Datum DESC) as Senaste_Datum " & _
"(SELECT count(ID) as antal FROM tbl_forum_sv WHERE tbl_forum_sv.Svar_ID = t1.ID) as Antal_svar " & _
"FROM tbl_forum_subj as t1 " & _
"ORDER BY t1.ID DESC;"
Set oRec = oConn.execute(SQL)