webForumDet fria alternativet

en sql-sats istället för tio?

8 svar · 219 visningar · startad av ampy

ampyMedlem sedan feb. 20011 498 inlägg
#1

Har denna kod:

	set rs = connect.execute("select count(*) as 1dagar from members where senastinloggad > '"&DateAdd("d", -1, Now)&"'")
	response.write rs("1dagar") & " medlemmar har loggat in de 1 senaste dagarna.<br>"
	set rs = nothing

	set rs = connect.execute("select count(*) as 2dagar from members where senastinloggad > '"&DateAdd("d", -2, Now)&"'")
	response.write rs("2dagar") & " medlemmar har loggat in de 2 senaste dagarna.<br>"
	set rs = nothing

Denna kod fortsätter tills 10 dagar men det känns lite onödigt att skapa 10 sql-frågor för denna applikation. Hur kan man räkna ut de tio uppgifterna med endast en sql-sats eller kan man göra på något annat sätt som är bättre än mitt sätt?

LarsGMedlem sedan dec. 200012 464 inlägg
#2
set rs = connect.execute("select day(senastInloggad) as dagen, count(*) as dagar " & _
" from members " & _
" where senastinloggad >'"&DateAdd("d", -1, Now) & _
" group by day(senastInloggad) " )
ampyMedlem sedan feb. 20011 498 inlägg
#3

Hmm, får felmeddelandet:

TCX][MyODBC]You have an error in your SQL syntax near '(senastinloggad) as dagen, count(*) as dagar from members where senastinloggad >' at line 1

På sql-satsen:

	sql = 	"select day(senastinloggad) as dagen, count(*) as dagar " & _
		"from members " & _
		"where senastinloggad > '"&DateAdd("d", -1, Now)&"' " & _
		"group by day(senastInloggad) "

Jag ser inget fel i koden. :(

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det är ju Mysql

sql = 	"select dayofmonth(senastinloggad) as dagen, count(*) as dagar " & _
		"from members " & _
		"where senastinloggad > '"&DateAdd("d", -1, Now)&"' " & _
		"group by dayofmonth(senastInloggad) "
ampyMedlem sedan feb. 20011 498 inlägg
#5

Nu tar den koden bara de två senaste dagarna, jag vill ha de tio senaste dagarna.

LarsGMedlem sedan dec. 200012 464 inlägg
#6
sql = 	"select dayofmonth(senastinloggad) as dagen, count(*) as dagar " & _
		"from members " & _
		"where senastinloggad > '"&DateAdd("d", -9, Now)&"' " & _
		"group by dayofmonth(senastInloggad) "
ampyMedlem sedan feb. 20011 498 inlägg
#7

Hmm, kom på att det inte blev så som jag vill ha det nu. Din kod räknar ju bara hur många poster som finns under det datumet. Den koden jag postade i första inlägget i denna tråd gör inte riktigt samma sak. Den räknar hur många medlemmar som har loggat in de 24 senaste timmarna, 48 senaste timmarna, 72 senaste timmarna osv.

Hur ska man göra så att det blir så som jag vill ha det?

Ex finns på denna sida:
http://www.ampy.net/active_members.asp

LarsGMedlem sedan dec. 200012 464 inlägg
#8

det har du rätt i. Det går inte att få till med en fråga i Mysql.

sql = 	"select count(*) as dagar " & _
		"from members " & _
		"where senastinloggad > '"&DateAdd("d", -9, Now)&"' " & _
		"group by to_days(senastInloggad) " & _
" order by to_days(senastInloggad) desc "

Om du tar ovanstående fråga så kan du summera i ditta ASP-script.

ampyMedlem sedan feb. 20011 498 inlägg
#9

Har skrivit koden så här nu:

	sql = 	"select count(*) as dagar " & _
		"from members " & _
		"where senastinloggad > '"&DateAdd("h", -240, Now)&"' " & _
		"group by to_days(senastinloggad) " & _
		"order by to_days(senastinloggad) desc "

	set rs = connect.execute(sql)

	x = 0
		do until x = 10

			x = x + 1
			intMembers = intMembers + rs("dagar")

			response.write intMembers & " medlemmar loggade in<br>" 
	
			rs.movenext
			loop

	set rs = nothing

Då får jag detta resultat:

89 medlemmar loggade in
134 medlemmar loggade in
161 medlemmar loggade in
196 medlemmar loggade in
224 medlemmar loggade in
241 medlemmar loggade in
254 medlemmar loggade in
273 medlemmar loggade in
287 medlemmar loggade in
305 medlemmar loggade in

Men på mitt andra sätt får jag följande resultat:

115 medlemmar har loggat in
147 medlemmar har loggat in
172 medlemmar har loggat in
212 medlemmar har loggat in
229 medlemmar har loggat in
249 medlemmar har loggat in
262 medlemmar har loggat in
275 medlemmar har loggat in
294 medlemmar har loggat in
312 medlemmar har loggat in

Det blir alltså inte riktigt som jag vill ha. :OO

Men jag kan strunta i det, spelar inte så stor roll.

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