Det är ingen garanti att värdet för sSida hämtas från den post där max(tid) hittas. Vilket värde som helst inom gruppen kan returneras.
Hela denna konstruktion är väldigt försåtlig eftersom det är svårt att upptäcka att man gör fel. Det är bara Mysql som tillåter denna korkade semantik.
Kom på det. Det verkar som om man inte kan ha samma namn på fälten.
create temporary table t(sidA char(4), tidB datetime)
select max(tid),sid from tabell
group by sid
Nu ser det ut så här: (obs! jag har funktioner som fixar execute)
andraDbRows("create temporary table t(sida char(4), tida datetime) select max(tid),sid from online group by sid")
minArray = getDbRows("select online.* from online join t on online.sid = t.sida and online.tid = t.tid")
Felet blir nu:
[TCX][MyODBC]Du har något fel i din syntax nära 'on on online.sid = t.sida and online.tid = t.tid'
Det händer ingenting. Blir tomt. RecSet.EOF=True
Så här ser det ut nu:
andraDbRows("create temporary table t(sida char(4), tida datetime) select max(tid),sid from online group by sid")
minArray = getDbRows("select online.* from online inner join t on online.sid = t.sida and online.tid = t.tida")
Vad är det som är galet?
Jag har en liten fråga angående temporära tabeller också. Fungerar det när det är flera användare där samtidigt? Det verkar som om den inte fungerar med flera samtidigt. Den säger att T inte finns. Jag kör även DROP TABLE T, men vem vet om någon användare kommer in innan den koden körs.
Kom på att det underlättar kanske felsökandet för dig om jag ger dig den kod som jag har just nu:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
' Koppling
Set gbo = Conn.Execute("create temporary table t(sida char(4), tida datetime) select max(tid),sid from online group by sid")
Set gbo = Conn.Execute("select online.* from online inner join t on online.sid = t.sida and online.tid = t.tida")
If gbo.EOF = True Then
%>Tomt<%
End If
Set gbo = Nothing
Conn.Close
Set Conn=Nothing
Som din kod är skriven så kommer t att innehålla fyra kolumner (sida,tida,,sid). Om namnen mellan kolumnlistan och selectsatsen inte stämmer så tolkas det som nya kolumner.
Set gbo = Conn.Execute("create temporary table t(sid char(4), tid datetime) select sid,max(tid) as tid from online group by sid")
Det var också fel ordning mellan kolumnerna (mitt fell).
Förresten:
Första gången man kör koden fungerar den utmärkt men om man uppdaterar sidan (F5) kommer det upp att Tabellen 't' finns redan. Jag har det i samma connection. Vad kan det bero på?
132 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17