/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
count i time interval
Fra : j p


Dato : 29-09-10 09:45

Hej

Jeg har koden:

for x=1 to 7
strsql = "SELECT dato,count(vare) as d FROM butik_5 where
dayofweek(dato) =" & x
Set rs = Conn.Execute(strSQL)
response.write "<li>" & rs("d") & "</li>"
next

Den tæller vare op pr. ugedag, hvordan kan jeg trækker data ud
f.eks. mandage fra kl. 10 - 12 ?

Dato er gemt som DateTime i mySQL databasen

mvh


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Leif Neland (29-09-2010)
Kommentar
Fra : Leif Neland


Dato : 29-09-10 14:27

Den 29-09-2010 10:44, j p skrev:
> Hej
>
> Jeg har koden:
>
> for x=1 to 7
> strsql = "SELECT dato,count(vare) as d FROM butik_5 where
> dayofweek(dato) ="& x
> Set rs = Conn.Execute(strSQL)
> response.write "<li>"& rs("d")& "</li>"
> next

Hvorfor select'er du dato, når du ikke bruger den? Og det er i øvrigt
også bare en tilfældig, måske den første dato, der er f.ex. en mandag.

Du er ond ved databasen, du laver 7 selects, hvor du kunne nøjes med 1:

SELECT dayofweek(dato) ugedag,count(vare) as d FROM butik_5
GROUP by 1
ORDER BY 1

Du kan så hente resultatet op i et todimensionelt array
aUgesalg = rs.GetRows
' aUgesalg(0,0)=dagnummeret på den første dag (1 for søndag)
' aUgesalg(1,0)=salg første dag
' aUgesalg(0,n)=dagnummeret på den n'te dag
' aUgesalg(1,n)=salg n'te dag

Husk at du ikke nødvendigvis får 7 rækker, kun en pr ugedag, der er salg.
>
> Den tæller vare op pr. ugedag, hvordan kan jeg trækker data ud
> f.eks. mandage fra kl. 10 - 12 ?
>
> Dato er gemt som DateTime i mySQL databasen
>
Lav grupperingen i databasen, og sorter det senere i asp

strsql="SELECT dayofweek(dato) ugedag,hour(dato) time, count(vare) as d
FROM butik_5
GROUP by 1,2
ORDER BY 1,2"

set rs = Conn.Execute(strSql)
'Hent resultatet ind i array
aSalgRes=rs.GetRows

'sorter resultatet ud i "regneark med dage nedad og time henad"
dim aSalg(8,25) 'Array går fra 0 til 7, 0 til 24, række og søjle 0
      'spildes, men det er lettere at overskue

for n = 0 to UBound(aSalgRes,2) '2. dimension af resultatarray = antal
rækker
aSalg(aSalgRes(0,n),aSalgRes(1,n))=aSalgRes(2,n)
next

'Så er salget mandag 10-12 aSalg(2,10)+aSalg(2,11)


PS:
Hvis du prøver at lave noget med at i asp at lave et sql-kald pr time pr
ugedag, så risikerer du der kommer en gal databaseadministrator og slår
dig i hovedet, hvis du arbejder på større datamængder.

PPS: Det kan også laves uden at hente det op i et mellemarray, men kun
tage en række ad gangen, men det er mere langhåret. Når der kun er tale
om 7*24 celler, så er det ikke besværet værd at optimere for ram-forbrug.

Leif



j p (29-09-2010)
Kommentar
Fra : j p


Dato : 29-09-10 14:49

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
> Den 29-09-2010 10:44, j p skrev:
> > Hej
> >
> > Jeg har koden:
> >
> > for x=1 to 7
> > strsql = "SELECT dato,count(vare) as d FROM butik_5 where
> > dayofweek(dato) ="& x
> > Set rs = Conn.Execute(strSQL)
> > response.write "<li>"& rs("d")& "</li>"
> > next
>
> Hvorfor select'er du dato, når du ikke bruger den? Og det er i øvrigt
> også bare en tilfældig, måske den første dato, der er f.ex. en mandag.
>
> Du er ond ved databasen, du laver 7 selects, hvor du kunne nøjes med 1:
>
> SELECT dayofweek(dato) ugedag,count(vare) as d FROM butik_5
> GROUP by 1
> ORDER BY 1
>
> Du kan så hente resultatet op i et todimensionelt array
> aUgesalg = rs.GetRows
> ' aUgesalg(0,0)=dagnummeret på den første dag (1 for søndag)
> ' aUgesalg(1,0)=salg første dag
> ' aUgesalg(0,n)=dagnummeret på den n'te dag
> ' aUgesalg(1,n)=salg n'te dag
>
> Husk at du ikke nødvendigvis får 7 rækker, kun en pr ugedag, der er salg.
> >
> > Den tæller vare op pr. ugedag, hvordan kan jeg trækker data ud
> > f.eks. mandage fra kl. 10 - 12 ?
> >
> > Dato er gemt som DateTime i mySQL databasen
> >
> Lav grupperingen i databasen, og sorter det senere i asp
>
> strsql="SELECT dayofweek(dato) ugedag,hour(dato) time, count(vare) as d
> FROM butik_5
> GROUP by 1,2
> ORDER BY 1,2"
>
> set rs = Conn.Execute(strSql)
> 'Hent resultatet ind i array
> aSalgRes=rs.GetRows
>
> 'sorter resultatet ud i "regneark med dage nedad og time henad"
> dim aSalg(8,25) 'Array går fra 0 til 7, 0 til 24, række og søjle 0
>       'spildes, men det er lettere at overskue
>
> for n = 0 to UBound(aSalgRes,2) '2. dimension af resultatarray = antal
> rækker
> aSalg(aSalgRes(0,n),aSalgRes(1,n))=aSalgRes(2,n)
> next
>
> 'Så er salget mandag 10-12 aSalg(2,10)+aSalg(2,11)
>
>
> PS:
> Hvis du prøver at lave noget med at i asp at lave et sql-kald pr time pr
> ugedag, så risikerer du der kommer en gal databaseadministrator og slår
> dig i hovedet, hvis du arbejder på større datamængder.
>
> PPS: Det kan også laves uden at hente det op i et mellemarray, men kun
> tage en række ad gangen, men det er mere langhåret. Når der kun er tale
> om 7*24 celler, så er det ikke besværet værd at optimere for ram-forbrug.
>
> Leif
>
>
Takker, det virker fint....nu skal jeg blot prøve at forstå det :)

mvh


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste