Sådär ja, mer problem :P
Jag har en tabell som heter "tid" och är av datatypen "time". Jag har en for-sats (i = 0 To 23) och vill mha den skapa ett recordset för varje varv i loopen och räkna hur många records det finns där "Hour(tid)" är större än i men mindre än i+1.
Hur kan jag göra?
Tacksam för svar.
LarsGMedlem sedan dec. 200012 464 inlägg Skapa en tabell (tally) med en kolumn av typen integer och gör insert på värdena 1 till 24
select v, count(tid.tid)
from tally left join tid
on v = hour(tid)
group by v
där "Hour(tid)" är större än i men mindre än i+1
Det finns inga heltal som uppfyller det villkoret.
UlfTMedlem sedan maj 20018 027 inlägg
LarsG skrev:
där "Hour(tid)" är större än i men mindre än i+1
Det finns inga heltal som uppfyller det villkoret.
Frågan är väl om det är möjligt att ställa villkoret: i < minutes(tid) < ( i + 60 )
Det borde i så fall lösa problemet. :)
LarsG skrev:
Det finns inga heltal som uppfyller det villkoret.
Oj, det tänkte jag inte på :D
Men att skapa en till tabell just nu är otänkbart tyvärr...
Tänk mig dock en lösning likt denna, kan det funkar?
SELECT Count(tid) AS antal, Hour(tid) AS tid FROM statsGROUP BY Hour(tid) HAVING Hour(tid) = " & i
LarsGMedlem sedan dec. 200012 464 inlägg SELECT Count(tid) AS antal, Hour(tid) AS tid
FROM stats
GROUP BY Hour(tid)
i så fall. Nackdelen med denna (jämfört med mitt förslag) är att du inte får något resultat för de timmar där det inte finns några poster. Det kan man ju hantera i applikationen.
LarsG skrev:
Nackdelen med denna (jämfört med mitt förslag) är att du inte får något resultat för de timmar där det inte finns några poster.
Det har jag redan tänkt på ;)
LarsG skrev:
SELECT Count(tid) AS antal, Hour(tid) AS tid
FROM stats
GROUP BY Hour(tid)
På den SQL'en får jag 25 på alla :S
Det här var ju dumt alltså :D
Här är lösningen:
SELECT Count(tid) AS antal FROM stats WHERE Hour(tid) = " & i
LarsGMedlem sedan dec. 200012 464 inlägg Det där är ingen bra lösning då du kommer att exekvera 24 frågor istället för en. Dessutom måste databashanteraren läsa alla poster i tabellen vid varje fråga.
Herregud, jag har redan omkring 100 frågor så vad spelar 23 extra för roll? Dessutom exekveras sidan på under 0.3 sekunder ändå, så det gör inte så mycket imo. :P
Jesper TMedlem sedan nov. 20017 144 inlägg Ja visst, har man ingen som helst ambition att:
- ha fler samtidiga besökare på siten
- lära sig det som är rätt
- lära sig mer
- skriva effektivare kod
- lära sig att optimera sin SQL
- vara tacksam för hjälp på WF
Så kan man göra så. ;)
Flera samtidiga besökare? Inte för att låta spydig med sidan har stått pall för > 40 besökare på samma gång. Det tycker jag är duktigt av en 2,8-ghz'are med 512mb ram och Windows XP :P
Dessutom är jag visst tacksam för all hjälp. Tack tack! :)
PoffeMedlem sedan apr. 20022 743 inlägg
SprayMaphia skrev:
Flera samtidiga besökare? Inte för att låta spydig med sidan har stått pall för > 40 besökare på samma gång. Det tycker jag är duktigt av en 2,8-ghz'are med 512mb ram och Windows XP :P
Dessutom är jag visst tacksam för all hjälp. Tack tack! :)
Nej det gör den inte för IIS 5.1 som fäljer med XP kan inte hantera så många. Det finns en gräns på 10 aktiva besökare per gång inbyggd. Så jag har lite svårt att tro på vad du säger faktiskt. XP är ingen server plattform, vill du ha fler samtida besökare så ska du anävnda någon av serverversionerna.