mboost-dp1

Hjælp til noget simpelt mysql


Gå til bund
Gravatar #1 - holmen
13. mar. 2007 09:09
Dette er et eksempel:
Hvis jeg i en mysql database skriver:
SELECT count(name) FROM payment WHERE date like "2003%" && status != betalt;

Får jeg antallet af names i payment fra 2003 hvor status IKKE er betalt.

hvis jeg vil have det for en enkelt måned (januar her), skrive jeg:

SELECT count(name) FROM payment WHERE date like "2003-01%" && status != betalt;

februar:

SELECT count(name) FROM payment WHERE date like "2003-02%" && status != betalt;

OSV.

Kan jeg gøre, så jeg får vist alle 12 mdr for 2003, ved at skrive en enkelt kommande/streng, i stedet for at skulle skrive en for hver måned? Har læst noget om GROUP eller GROUP BY, men ved ikke hvordan jeg skal få det til at virke.

Nogen der kan forstå hvad det er jeg vil?
På forhånd tak.
Gravatar #2 - mindzero
13. mar. 2007 09:43
Det er korrekte at du kan bruge GROUP BY, dog ved jeg ikke om man kan formatere det videre, da du jo ikke har en kolonne der hedder måned, men har hele din dato samlet.

Så hvis du bruger GROUP BY date så vil den jo vise dem per unikke felt i din date kolonne (som sikkert er per dag?).

Det du kan gøre er at formatere date kolonnen i din select. Nu er jeg ikke ligefrem en ekspert og kan ikke teste det selv, men tror at du kan gøre det med noget i retning af:

SELECT count(name), LEFT(date, 7) As month FROM payment GROUP BY month HAVING status != betalt;

Left funktionen tager de 7 første tegn fra venstre (så vidt jeg har forstået), men ellers må du kigge lidt på nogle af MySQL's andre funktioner hvis mit eksempel ikke virker. Men håber ihvertfald at mit eksempel kan give dig et hint :)
Gravatar #3 - holmen
13. mar. 2007 13:15
Tak for inputtet. Den her virkede:
SELECT LEFT(date, 7), count(name) FROM payment WHERE status !=betalt GROUP BY LEFT(date, 7);
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login