webForumDet fria alternativet

Förbättra och få bort en RecSet i SQL satsen

Databaser & SQL

3 svar · 243 visningar · startad av pRob3

Medlem sedan maj 2003151 inlägg
Frågan#1

Fick lysande hjäp innan idag när jag ville göra om nedanstånde kod så den skulle passa till Access (kör MySQL). Men då fick ni in bort RecSet (Rs33) in i SQL satsen genom att använda IN direkt i sql satsen.
Skulle uppskatta om någon skulle vilja optimera koden nedan lite.

strSQL = "select count( * ) from  inloggningar where slaf = '" & vem & "'"
intLogs = Connect.execute( strSQL )( 0 )
if intLogs <= 15 then
  strSQL = "insert into inloggningar(slaf, datum, status, ip) values('" & vem & "','"& NOW() &"','1','"& Request.ServerVariables("REMOTE_ADDR") &"')"
else
  strSQL = "select id from inloggningar where slaf ='" & vem & "' order by datum LIMIT 1"
  set Rs33 = Connect.execute( strSQL )
  strSQL  = "update inloggningar set datum = '"& NOW() &"' where id = " & rs33( "id" )
  Rs33.Close : Set Rs33=Nothing
end if
Connect.execute( strSQL )
Medlem sedan maj 2003151 inlägg
#2
strSQL = "UPDATE inloggningar SET datum = '" & NOW() & "' WHERE slaf IN (SELECT slaf FROM inloggningar WHERE slaf = '" & vem & "' ORDER BY datum ASC LIMIT 1)"

Funkar inte...

Medlem sedan juni 200032 967 inlägg
#3

I SPiNs inlägg i din förra tråd, kan du notera att man inte skriver LIMIT 1 i Access, utan SELECT TOP 1 ....

"Funkar inte" är dessutom ingen bra felbeskrivning. Ge oss felmeddelande, alltid.

Medlem sedan dec. 20003 563 inlägg
#4

Du måste ha mySQL 4.1 för att kunna köra subquerys.

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