Avatar billede dna Nybegynder
23. august 2001 - 23:34 Der er 25 kommentarer og
1 løsning

muligt at sortere pr. uge?

Nu vil jeg virkelig gerne have løst mit problem, så jeg smider 100 point i nu!

strSQL = \"Select DatePart(\'ww\', dato) as uge, sum(antal) as sum_antal From tabel group by DatePart(\'ww\', dato)\"

Kan man ikke dette med mySQL ..? Hvad skal man ellers gøre? Se evt. her for den fulde problemstilling:
http://www.eksperten.dk/spm/101335

dna
Avatar billede henrik_ffc Nybegynder
24. august 2001 - 00:17 #1
Prøv \"... group by uge\" istedet for \"group by DatePart...\"
Avatar billede mkelle1 Nybegynder
24. august 2001 - 00:21 #2
Hej DNA.

DatePart er ikke en Mysql funktion, så den virker ikke, men følgende er testet og virker:

$sql = \"Select week(Dato) as uge, count(*) as poster, sum(antal) as total From tabel group by week(Dato,1)\";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
echo \"I uge nr $row[uge] er der $row[poster] poster. Summen er $row[total]<br>\";
}

Håber det løser dit problem

Mads
Avatar billede mkelle1 Nybegynder
24. august 2001 - 00:23 #3
Hov, jeg havde glemt i den første week, at der skal stå
week(Dato,1)

Hvis man undlader (eller skriver 0) regner den med at første ugedag er en søndag, når der står 1, regner den med at det er mandag.

Mads
Avatar billede dna Nybegynder
24. august 2001 - 01:09 #4
mkelle1... er week() ikke en PHP funktion ? Jeg arbejder i ASP!
Avatar billede dna Nybegynder
24. august 2001 - 01:14 #5
Hmm.. nu får jeg ingen fejlmeddelse.. (måske virker det) men, det recordset som den kommer ud med er tomt?

dna
Avatar billede dna Nybegynder
24. august 2001 - 01:34 #6
Selvom listen indeholder poster fra
17-08-2001 ---> 22-08-2001 så kommer denne sql ud tom:
strSQL = \"Select week(dato,1) as uge, count(*) as uge_antal From info where sideID = \'\"& request.querystring(\"id\") &\"\' group by week(dato,1)\"

den burde da virke?

dna
Avatar billede mkelle1 Nybegynder
24. august 2001 - 02:09 #7
Hej dna

week() er en mysql funktion og virker derfor ligegyldigt med hvilket programmeringssprog du benytter. Jeg kan desværre slet ikke noget ASP så jeg har svært ved at fejlfinde i sådan en sætning. Jeg ved ikke hvad din where afgrænsning indeholder - er du sikker på at det ikke  er der problemet er?
Umiddelbart skulle den virke og give dig dit antal for sidste halvdel af uge 33 og første halvdel af uge 34.

Mads


Avatar billede dna Nybegynder
24. august 2001 - 02:24 #8
Jeg har nu forenklet den...

strSQL = \"Select week(dato,1) as uge from info group by week(dato,1)\"

Burde den ikke ligge de poster hvor \"dato\" går ind under 33 i en record for sig selv og dem som indgår i uge 34 i en anden record ???

dna
Avatar billede mkelle1 Nybegynder
24. august 2001 - 02:25 #9
Har du prøvet uden din where klausul - giver den så nogle resultater?

Mads
Avatar billede dna Nybegynder
24. august 2001 - 02:27 #10
Er det mig der ikke fatter brugen af week() .. ?? Hvis jeg laver denne SQL:

strSQL = \"Select * from info where week(dato,1) = 34\"

Så kommer dette resultat:
24-08-2001 
22-08-2001 
22-08-2001 
20-08-2001 
20-08-2001 
21-08-2001
Avatar billede dna Nybegynder
24. august 2001 - 02:30 #11
Ja, jeg har prøvet uden WHERE..

den enkle version:
strSQL = \"Select week(dato,1) as uge from info group by week(dato,1)\"

Den giver også et tomt recordset!!

dna
Avatar billede mkelle1 Nybegynder
24. august 2001 - 02:31 #12
Jo, men du skal være opmærksom på at den sql-sætning ikke returnerer hele recorden, men kun den værdi du gemmer i variablen: uge. Det vil sige at du skulle kunne udskrive 2 poster, en med værdien 33 og en med værdien 34, - og ikke andet!

Mads
Avatar billede dna Nybegynder
24. august 2001 - 02:34 #13
ja, det ved jeg godt.. men, jeg kan slet ikke udskrive nogen.. da record´en EOF (End of File) - ved ikke hvad det hedder i PHP, men betyder at der ikke er flere records!

dna
Avatar billede mkelle1 Nybegynder
24. august 2001 - 02:34 #14
Din sql-sætning hvor du bruger week() i den where klausul ser jo ud til at virke fint. I din sidste sql-sætning skulle du kunne udskrive variablen uge.

Mads
Avatar billede dna Nybegynder
24. august 2001 - 02:43 #15
Ja.. det ville jeg også mene.. men, det virker F.... ikke.. Har du nogle gode idéer ? Spørgsmål ? Noget jeg skal prøve ?

dna
Avatar billede mkelle1 Nybegynder
24. august 2001 - 02:48 #16
Prøv at droppe \"group by week(dato,1)\" og se om den så vil skrive et uge-nr for hver post.
Har du en funktion hvor du kan få returneret antallet af rækker i et result-sæt (i php hedder den: mysql_num_rows($result) )

Mads
Avatar billede dna Nybegynder
24. august 2001 - 02:53 #17
kan kun lave et loop (alt efter hvad jeg ved)

do until record.eof
poster = poster + 1
loop


Hvis man skal droppe group by ?? Hvordan skal det så se ud?

strSQL = \"Select week(dato,1) as ugen from info\"

Den sql giver nemlig heller ingenting ???

dna
Avatar billede dna Nybegynder
24. august 2001 - 02:59 #18
Bruger du ikke ICQ/IRC ?
Avatar billede mkelle1 Nybegynder
24. august 2001 - 03:18 #19
Hej DNA
Desværre ingen ICQ/IRC.

Jeg forstår ikke hvorfor det ikke virker hos dig, fordi det virker fortrinligt på min lille test tabel. Kan du ikke poste koden her, selv om ASP ikke er min stærke side, kunne det jo være at jeg kunne se et eller andet.

Mads
Avatar billede dna Nybegynder
24. august 2001 - 03:22 #20
!!!!!!!!!!!!!!! JUBII !!!!!!!!!!!!!!!!!!!!!!

strSQL = \"Select dato, sum(antal) as uge_antal from info where sideID = \'\"& request.querystring(\"id\") &\"\' group by week(dato,1)\"

Sådan her virker det... Jeg bliver så bare nødt til at gøre sådan her for at få uge-nummeret:
datepart(\"ww\",record2(\"dato\"))

dna (som er hoppet i seng)

Avatar billede mkelle1 Nybegynder
24. august 2001 - 03:27 #21
Fedt!!
Sov godt!

Mads
Avatar billede proaccess Nybegynder
24. august 2001 - 07:43 #22
Hvorfor har du dato med... skal du ikke have en total pr. uge?? - Husk desuden en afgrænsning for årstal, der er jo forskel på uge 34 i 2001 og i år 2002 !!!

strSQL = \"SELECT Week(Dato,1), Sum(Antal) FROM Info WHERE SideID = \'\" & request.querystring(\"id\") & \"\' GROUP BY Week(Dato,1)\"
Avatar billede dna Nybegynder
24. august 2001 - 14:36 #23
Hvordan afgrænser jeg lettest det med året også... jeg har prøvet at skrive \"Select Week(dato,1) .. det virkede bare ikke! ?

dna
Avatar billede mkelle1 Nybegynder
24. august 2001 - 16:39 #24
Hej dna, mysql har også en year(date) funktion som du kan bruge.
Altså

group by year(Dato),Week(Dato,1)

og jeg tror bestemt at ASP må have et eller anden så du kan trække året ud ved hjælp af datepart()

måske datepart(\"year\",recprd2(\"dato\")) eller sådan noget

Hilsen

Mads
Avatar billede dna Nybegynder
25. august 2001 - 11:04 #25
mkelle1 ... du har virkelig hjulpet mig godt på vej her...
Avatar billede mkelle1 Nybegynder
26. august 2001 - 20:22 #26
En fornøjelelse - jeg lærte også selv noget nyt.

Mads
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