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.
Annonceindlæg fra Edora
02. august 2003 - 15:24
#1
SELECT dato, count(*) as antal FROM mintabel GROUP BY dato
02. august 2003 - 15:25
#2
select dato,count(*) as antal from dintabel group by dato
02. august 2003 - 15:25
#3
;) I det mindste er de ikke helt ens .... *g*
02. august 2003 - 15:26
#4
jamen der er jo problemet med tiden
02. august 2003 - 15:26
#5
dato indeholder jo fx 2003-07-26 13:23:02
02. august 2003 - 15:26
#6
ved ikke om det er muligt
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
02. august 2003 - 15:27
#8
SELECT date_format(mindatotid, "%Y-%m-%d") as mindato, count(*) as antal FROM mintabel GROUP BY mindato
02. august 2003 - 15:28
#9
erik: giver udskriften: dato2 antal Y-m-d 231
02. august 2003 - 15:29
#10
mahler: din virker heller ikke...giver samme udskrift som første forslag bortset fra klokkeslettet er fjernet
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)
02. august 2003 - 15:32
#12
Hvis det ikke virker - hvad er din mysql-version?
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.
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
02. august 2003 - 15:33
#15
ja, den virker også
02. august 2003 - 15:34
#16
mahler: det var fejlen...mht. GROUP BY. Havde lige været for hurtig der. I kan bare svare
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.
02. august 2003 - 15:35
#18
svar :-)
02. august 2003 - 15:36
#19
frafalder - jeg må øve mig på %-tegn
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.
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
02. august 2003 - 15:44
#22
Ikke forstået? På tværs af alle datoer eller?!?
02. august 2003 - 15:45
#23
28 i hver række??
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
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
02. august 2003 - 15:46
#26
eller måske det kan gøres smartere
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....
02. august 2003 - 15:47
#28
Lav en mysql_num_rows(...) lige efter din select. Den sku' gi' 28
02. august 2003 - 15:47
#29
nå ja
02. august 2003 - 15:49
#30
næh - den giver 4
02. august 2003 - 15:50
#31
Naturligvis... Svaret består jo kun af 4 rækker.
02. august 2003 - 16:54
#32
ja selvfølgelig gør den det...nogen forslag, eller bliver jeg nødt til 2 sql'er?
02. august 2003 - 17:21
#33
2 sql'er...
Computerworld tilbyder specialiserede kurser i database-management