webForumDet fria alternativet

Ska även skriva ut vid 0

Databaser & SQLur Databashanterare & SQL

6 svar · 179 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Har denna sql-sats för att skriva ut antal inloggningar per timme:

	query = "select count(*) as antal, datum from inloggningar where vad = 'loggain' AND left(datum,10) = '"&date-1&"' group by mid(datum,12,2) order by mid(datum,12,2) asc"

	set rs = connect.execute(query)
	
	
	if  not rs.eof then
   	
  	do until rs.eof
         	
	response.write mid(rs("datum"),12,2) & " - " & rs("antal") & "<br>"
         
        
        rs.movenext
   	loop

	end if

Koden skriver ut detta:

00 - 6
01 - 1
04 - 1
06 - 1
07 - 4
08 - 2
09 - 2
10 - 5
11 - 2
12 - 3
13 - 8
14 - 4
15 - 11
16 - 12
17 - 7
18 - 14
19 - 10
20 - 10
21 - 6
22 - 3
23 - 3

Som ni ser skriver den inte ut 02, 03 och 05 för att det var 0 inloggningar då. Hur ska man göra för att den ska skriva ut 0 vid de timmarna?

Medlem sedan dec. 2000503 inlägg
#2

Du kan ju lösa de i asp, genom att i loopen kolla om mid(rs("datum"),12,2)=t, och t plussas på vid varje loop om mid(rs("datum"),12,2) inte är lika med t så kan ju ju skiva att t - 0.

Medlem sedan feb. 20011 498 inlägg
#3

Hur menar du?

Medlem sedan dec. 200012 464 inlägg
#4
query = "select count(*) as antal, hour(datum) from inloggningar " & _
" where vad = 'loggain' AND datediff('d',datum,date()) = 1 " & _
" group by hour(datum) " & _
" order by hour(datum) asc "

set rs = connect.execute(query)
	
for i = 0 to 23
    found = false
    if  not rs.eof then
        if  cint(rs(1)) = i then
            response.write right("00" & rs(1),2) & " - " & rs("antal") & "<br>"
            rs.movenext
            found = true
        end if
    end if
    if not found then response.write right("00" & i,2) & " - 0 <br>" 
next

Att använda mid/left på datum är inte så bra tycker jag.

Medlem sedan feb. 20011 498 inlägg
#5

Nu får jag

[TCX][MyODBC]You have an error in your SQL syntax near '('d',datum,date()) = 1 group by hour(datum) order by hour(datum) asc ' at line 1

På SQL-satsen.

Medlem sedan dec. 200012 464 inlägg
#6

Jaså du använder mysql du.

query = "select count(*) as antal, hour(datum) from inloggningar " & _
" where vad = 'loggain' AND to_days(current_date) - to_days(datum) = 1 " & _
" group by hour(datum) " & _
" order by hour(datum) asc "
Medlem sedan feb. 20011 498 inlägg
#7

Det visste du väl redan?
Så mycket som du har hjälpt mig ;)

142 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)