webForumDet fria alternativet

Vad är det som gäller?

ASP

19 svar · 406 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej

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...

Medlem sedan dec. 20003 563 inlägg
#2

Det första är rätt.
Vad menar du med "inte rätt grejer"?

Medlem sedan feb. 20034 441 inlägg
#3

Kolla längst ner i min andra tråd

Medlem sedan mars 20015 287 inlägg
Medlem sedan feb. 20034 441 inlägg
#5

Jaja, men det funakr ju inte som jag vill... Blir helt pissed off på det här...

Medlem sedan dec. 20003 563 inlägg
#6

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.

Medlem sedan feb. 20034 441 inlägg
#7

Nä, men... JAg hänger inte med...

http://MickeA.dynDNS.org/Ec => Ec-Programmet => Öppet Forum

Sen ser du nog själv, till höger "Senaste Inlägg".

Prova skriv ett NYTT SVAR på ngn tråd, sen uppdaterar du sidan du kom till först, kolla och se att alla får samma...

Medlem sedan mars 20015 287 inlägg
#8

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.

Medlem sedan feb. 20034 441 inlägg
#9

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.

Medlem sedan dec. 20003 563 inlägg
#10

Skriv upp din tabellstruktur och exakt vilken data du vill få ut bara så flyttas nog denna till SQL-forumet ;)

Medlem sedan feb. 200112 078 inlägg
#11

MickeA.com » Håll dig helst till en tråd, om ämnet tillåter det. Bifrågor kan ställas i samma tråd, om de ligger inom samma område.

Jag slår dock inte ihop dina två senaste trådar, då tidpunkterna för inläggen skulle förvirra konsistensen i diskussionen.

Kör på i den här tråden, den andra blev ju uppklarad.

MVH

OveRRidE
moderator, webForum

Medlem sedan feb. 20034 441 inlägg
#12

Okidoki, sorry...

[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.

Medlem sedan dec. 20003 563 inlägg
#13
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.

Medlem sedan feb. 20034 441 inlägg
#14

Okidoki, det här ser bra ut, men nu börjar det bli lite överkurs för mig, kan jag ersätta HELA din SQL mot den jag har:

Dim oConn
Dim oRec
Dim strSQL

'_____________________________________________________________

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

'_____________________________________________________________

Set oRec = Server.CreateObject("ADODB.Recordset")
strSQL= "SELECT * FROM tbl_forum_subj WHERE Forum_ID = 'oppet' ORDER BY Datum DESC;"
oRec.Open strSQL, oConn, 1, 3

Set oRec2 = Server.CreateObject("ADODB.Recordset")
strSQL2 = "SELECT TOP 1 Datum, Skribent FROM tbl_forum_sv WHERE Forum_ID = 'oppet' ORDER BY Datum DESC;"
Set oRec2 = oConn.Execute(strSQL2)

%>
<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("Datum") & "<br>Av: " & oRec2("Skribent") & "</font></td></tr><tr><td colspan='4' width='100%' height='5'></td></tr>")
	
	oRec.MoveNext
Loop

Så här ser loopen jag har ut, men kan ngn vara snäll och sätta ihop den nya SQlä'en jag fick så den finns här inne ngnstans i loopen?!

Medlem sedan dec. 20003 563 inlägg
#15

Skit i min tidigare kod. Den funkar inte. Den här funkar i alla fall fast det kan nog optimeras.


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
Medlem sedan feb. 20034 441 inlägg
#16
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

Vad betyder felmesset och vad ligger felet?

Medlem sedan feb. 20034 441 inlägg
#17

Nu jag i SQl'en att du har ngt som heter "t1" ska jag byta ut det mot den första tabellens namn?! (tbl_forum_subj)

Medlem sedan dec. 20003 563 inlägg
#18

Kolla mellanrummen jag missade :)

' 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)
Medlem sedan feb. 20034 441 inlägg
#19

Verkar fortf. vara ngt fel, får samma felmess iaf, raden där felet ligger är där SQLsasten exekveras, så det är fortf. ngt fel i den :(

Medlem sedan feb. 20034 441 inlägg
#20

Yes ; )) JAg kollade igenom och såg att du glömt ett kommatecken, satte dit det, bytte till en annan typ av RecSet,och nui funakr det ;))

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)