Avatar billede webstuff Nybegynder
26. februar 2006 - 13:33 Der er 13 kommentarer og
1 løsning

tæl flere gange i query

Jeg har lavet en besøgstæller på min side, men jeg vil gerne dele den op i:
- I dag: XX
- Uge: XX
- Måned: XX
- I alt: XX

Men pt. bruger jeg 4 querys på at tælle det op, og det tror jeg ikke er optimalt derfor har jeg prøvet at lave noget alla det her:
--------------------
$tael_hist = mysql_query("SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, INTERVAL 24 HOUR) > NOW() AS idag, DATE_ADD(tid, 1440 HOUR) AS uge") or die(mysql_error());
--------------------
( Den tæller kun "idag" og "uge" )
Men den bringer en fejl, nogen der ved hvordan jeg kan skrive sådan en query???
Avatar billede michael_stim Ekspert
26. februar 2006 - 13:39 #1
$tael_hist = mysql_query("SELECT *, (SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, INTERVAL 24 HOUR) > NOW()) AS idag, (SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, 1440 HOUR)) AS uge FROM hits") or die(mysql_error());

Hvis du har en nyere MySQL. (4.0+ tror jeg)
Avatar billede webstuff Nybegynder
26. februar 2006 - 13:57 #2
min mysql_fetch_assoc() siger :
#mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource#
Avatar billede webstuff Nybegynder
26. februar 2006 - 13:57 #3
kan det være fordi min mysql ikke er "uptodate" ?
Avatar billede webstuff Nybegynder
26. februar 2006 - 13:58 #4
Min query ser forresten sådan her ud nu:
--------------------------
$tael_hist = mysql_query("SELECT *, (SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, INTERVAL 24 HOUR) > NOW()) AS idag, (SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, INTERVAL 168 HOUR)) AS uge FROM hits") or die(mysql_error());
--------------------------
Avatar billede michael_stim Ekspert
26. februar 2006 - 13:59 #5
Så skal du nok ud i noget join (innerjoin), hvilket ikke lige er min stärke side ;o)
Avatar billede webstuff Nybegynder
26. februar 2006 - 14:05 #6
Heller ikke min ;-)
Men burde jeg egentligt ikke flytte spørgsmålet til "MySQL" i stedet for her i "PHP" ???
Avatar billede michael_stim Ekspert
26. februar 2006 - 14:09 #7
Hvad hvis du bruger UNION. Ved ikke rigtigt om det er den du i virkeligheden skla have fat i.
Avatar billede webstuff Nybegynder
26. februar 2006 - 14:14 #8
kan du vise et eksempel??
Avatar billede michael_stim Ekspert
26. februar 2006 - 14:17 #9
(SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, INTERVAL 24 HOUR) > NOW()) UNION (SELECT COUNT(*) FROM hits WHERE DATE_ADD(tid, INTERVAL 168 HOUR))
Avatar billede webstuff Nybegynder
26. februar 2006 - 15:33 #10
hvad er de midlertidlige variabler så?
Avatar billede michael_stim Ekspert
26. februar 2006 - 16:17 #11
Jeg må nok melde pas her ;o) Er vant til at arbejde med Oracle. Men opret et nyt spörgsmål i mysql-kategorien.
Avatar billede webstuff Nybegynder
26. februar 2006 - 16:24 #12
okay... lukker af herfra..
håber det er i orden du ikek får nogle point, ellers må du brokke dig ;-)
Avatar billede webstuff Nybegynder
26. februar 2006 - 16:25 #13
Avatar billede michael_stim Ekspert
26. februar 2006 - 16:30 #14
Klart jeg ikke skla have nogle point ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester