Avatar billede riversen Nybegynder
02. august 2003 - 15:21 Der er 32 kommentarer og
1 løsning

Hjælp til forespørgsel

Jeg skal have lavet en forespørgsel der fortælle, hvor mange rækker der er for hver dag.

Der er et felt af typen datetime

dvs. resultatet skal være:

2003-07-30 |  4
2003-07-31 |  2
2003-08-01 |  7
2003-08-02 | 15

Håber det er forståeligt.
Avatar billede mahler Nybegynder
02. august 2003 - 15:24 #1
SELECT dato, count(*) as antal
FROM mintabel
GROUP BY dato
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:25 #2
select dato,count(*) as antal from dintabel group by dato
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:25 #3
;) I det mindste er de ikke helt ens .... *g*
Avatar billede riversen Nybegynder
02. august 2003 - 15:26 #4
jamen der er jo problemet med tiden
Avatar billede riversen Nybegynder
02. august 2003 - 15:26 #5
dato indeholder jo fx 2003-07-26 13:23:02
Avatar billede riversen Nybegynder
02. august 2003 - 15:26 #6
ved ikke om det er muligt
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:27 #7
Prøv lige

select date_format(dato,"Y-m-d") as dato2,count(*) as antal from dintabel group by dato2
Avatar billede mahler Nybegynder
02. august 2003 - 15:27 #8
SELECT date_format(mindatotid, "%Y-%m-%d") as mindato, count(*) as antal
FROM mintabel
GROUP BY mindato
Avatar billede riversen Nybegynder
02. august 2003 - 15:28 #9
erik: giver udskriften:

dato2  antal 
Y-m-d 231
Avatar billede riversen Nybegynder
02. august 2003 - 15:29 #10
mahler: din virker heller ikke...giver samme udskrift som første forslag bortset fra klokkeslettet er fjernet
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:31 #11
Der skal %-er på..... Ja.

mysql> select date_format(dato,"%Y-%m-%d") as dato2,count(*) as antal from datetimetest group by dato2;
+------------+-------+
| dato2      | antal |
+------------+-------+
| 2003-08-01 |    1 |
| 2003-08-02 |    2 |
+------------+-------+
2 rows in set (0.01 sec)
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:32 #12
Hvis det ikke virker - hvad er din mysql-version?
Avatar billede mahler Nybegynder
02. august 2003 - 15:32 #13
Er du helt sikkwe på du har lavet GROUP BY mindato og ikke bare group by feltnavn-i-databasen?


Hvis jeg i min database laver "group by feltnavn-i-db", så virker det ikke.
Hvis jeg laver group by mindato (altså AS-navnet i select delen) så virker det.
Avatar billede riversen Nybegynder
02. august 2003 - 15:32 #14
SELECT DISTINCT date_format( dato, "%Y-%m-%d" ) AS dato, count( * ) AS antal
FROM visitor
GROUP BY dato LIMIT 0 , 30

den her virker
Avatar billede riversen Nybegynder
02. august 2003 - 15:33 #15
ja, den virker også
Avatar billede riversen Nybegynder
02. august 2003 - 15:34 #16
mahler: det var fejlen...mht. GROUP BY. Havde lige været for hurtig der. I kan bare svare
Avatar billede mahler Nybegynder
02. august 2003 - 15:34 #17
Har lige testet i både Mysql 3.23.x (windows) og Mysql 4.0.x - det virker ens i begge udgaver.

Hvis du har kaldt dato_format feltet det samme som i databasen, så sørg for de er forskellige. Database-kolonne navnet vejer tungest, når mysql prøver at finde ud af hvad du vil group'e efter.
Avatar billede mahler Nybegynder
02. august 2003 - 15:35 #18
svar :-)
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:36 #19
frafalder - jeg må øve mig på %-tegn
Avatar billede riversen Nybegynder
02. august 2003 - 15:42 #20
hov lige en tilføjelse...kan vi sætte en samlet optælling i hver række...for at følge mit eksempel...28 i hver række.
Avatar billede riversen Nybegynder
02. august 2003 - 15:43 #21
hvis vi kan arbejde videre ud fra den her:
SELECT date_format(dato, "%Y-%m-%d") as mindato, count(*) as antal
FROM visitor
GROUP BY mindato
Avatar billede mahler Nybegynder
02. august 2003 - 15:44 #22
Ikke forstået?
På tværs af alle datoer eller?!?
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:45 #23
28 i hver række??
Avatar billede riversen Nybegynder
02. august 2003 - 15:45 #24
2003-07-30 |  4 | 28
2003-07-31 |  2 | 28
2003-08-01 |  7 | 28
2003-08-02 | 15 | 28
Avatar billede riversen Nybegynder
02. august 2003 - 15:45 #25
så jeg kan regne procenter ud for hver række uden at skulle tælle dem alle sammen først
Avatar billede riversen Nybegynder
02. august 2003 - 15:46 #26
eller måske det kan gøres smartere
Avatar billede mahler Nybegynder
02. august 2003 - 15:46 #27
Det tror jeg ikke... Der på du nok starte med at lave en

select count(*) as total from mintabel

og via den øvrige program logik tilføje det der, hvor du har brug for det....
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:47 #28
Lav en  mysql_num_rows(...) lige efter din select. Den sku' gi' 28
Avatar billede riversen Nybegynder
02. august 2003 - 15:47 #29
nå ja
Avatar billede erikjacobsen Ekspert
02. august 2003 - 15:49 #30
næh - den giver 4
Avatar billede mahler Nybegynder
02. august 2003 - 15:50 #31
Naturligvis...
Svaret består jo kun af 4 rækker.
Avatar billede riversen Nybegynder
02. august 2003 - 16:54 #32
ja selvfølgelig gør den det...nogen forslag, eller bliver jeg nødt til 2 sql'er?
Avatar billede mahler Nybegynder
02. august 2003 - 17:21 #33
2 sql'er...
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
Computerworld tilbyder specialiserede kurser i database-management

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