[mysql]problemen met count en group

Pagina: 1
Acties:

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
ik heb de volgende tabel in mij db
code:
1
2
3
4
5
6
7
8
stats2_id - int - primairy
stats2_ip - varchar
stats2_browser - varchar
stats2_version - varchar
stats2_os - varchar 
stats2_url - varchar    
stats2_date - date
stats2_time - time

ik heb hierin expres date en time gescheiden, omdat het dan makkelijker is stats te uit te lezen.

alleen nu wil ik hieruit het aantal totale hits lezen, en dan in een grafiek vorm per dag.

dus ik heb dit:
code:
1
2
3
SELECT count(stats2_id)  AS stats2_count, stats2_date
FROM  `stats2` 
GROUP  BY `iets`

daar moet alleen een group iets bij. nu is dat al vrij kut, want ik wil dus dat dat ding gewoon ALLE records telt, die van een bepaalde datum en later zijn (dus er moet een where clausule in komen)
dan kan ik met php wel verder doen, hoewel het lomp is

ik kan in princiepe dus een extra veld aan me tabel toevoegen die gewoon altijd de waarde 0 heeft, en daar dus op groupen, maar dit is niet echt profesioneel.

toen dacht ik, dit kan vast simpeler.
bijv. zo, dat je grouped op stats2_date (datum dus) en dan krijg je zoiets:
code:
1
2
3
4
5
SELECT count(stats2_id)  AS stats2_count, stats2_date
FROM  `stats2` 
GROUP  BY `stats2_date`
WHERE `stats2_date` > '2004-02-11'
ORDER BY `stats2_date`

maar dan krijg ik de error:
#1064 - You have an error in your SQL syntax near 'WHERE stats2_date > '2004-02-11' at line 4

nu denk ik dat dat komt omdat ik veel te veel stats2_date gebruik, maar ik zie niet in hoe het anders moet.
kan het toevallig niet om te groupen op dezelfde entry als die ik gebruik in de where clause?
kan iemand helpen?

[ Voor 11% gewijzigd door BasieP op 12-08-2004 15:32 ]

This message was sent on 100% recyclable electrons.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

GROUP en WHERE omdraaien

Programmer - an organism that turns coffee into software.


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:40

Dido

heforshe

Als je je date erbij wilt hebben in je uitvoer wil je dus niet alle records tellen, maar alle records per date. En daar group je dus op. (En als je doet wat in de eerste reactie staat werkt dat ook ;) )

Als je alles wilt tellen na een bepaalde datum (of tussen twee datums...) dan hoeft je date-veld helemaal niet in je select te staan, en heb je geen group by nodig :)

het ligt er dus aan wat je wilt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
stats2_dat    stats2_count
11 08 2004       100
12 08 2004       240
13 08 2004       300

krijg je met

SELECT stats2_date, count(stats2_id)  AS stats2_count
FROM  `stats2` 
WHERE `stats2_date` > '2004-08-10'
GROUP  BY `stats2_date`
ORDER BY `stats2_date`

of
code:
1
2
3
4
5
6
7
8
stats2_count
640

krijg je met

SELECT count(stats2_id)  AS stats2_count
FROM  `stats2` 
WHERE `stats2_date` > '2004-08-10'

[ Voor 39% gewijzigd door Dido op 12-08-2004 15:52 ]

Wat betekent mijn avatar?


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
* BasieP slaat zichzelf voor de kop |:(
danku menschen het is nu gelukt

This message was sent on 100% recyclable electrons.