Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

MySql: group by with rollup problem

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 23.06.2009, 02:56

Hallo,

wie kann ich bei einem 'GROUP BY ... WITH ROLLUP' den wert in der 'group by' spalte aendern? hier meine abfrage:

Code: Alles auswählen

SELECT
DATE_FORMAT(auftrag.auftragseingang,'%b %y') AS Monat,
Count(auftrag.auftrag_id) as Bestellungen,
Sum(warenkorb.anzahl*warenkorb.einzelpreis) AS Storno_Total
FROM
auftrag
Inner Join warenkorb ON warenkorb.auftrag_id = auftrag.auftrag_id
WHERE
auftrag.auftrag_status =  '-1'
GROUP BY 
DATE_FORMAT(auftrag.auftragseingang,'%y%m') 
WITH ROLLUP
eigentlich recht simpel, zeige wert und anzahl aller stornierten auftraege (status = -1) an, fasse nach monat zusammen (DATE_FORMAT(auftrag.auftragseingang,'%y%m') = '0901' = januar 2009) .
allerdings zeigt meine letzte 'ROLLUP' zeile jetzt den letzten monat an - wie kann ich es so aendern das dort 'Total' steht? auf https://dev.mysql.com/doc/refman/5.0/en ... fiers.html benutzen die ifnull, allerdings geht das bei mir nicht da der wert nicht null ist...?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


bloddy newbie
PostRank 4
PostRank 4
Beiträge: 171
Registriert: 18.05.2006, 20:15

Beitrag von bloddy newbie » 23.06.2009, 11:28

Der Wert ist nicht NULL, da du es ja formatierst ;-). Also wird hier der aktuelle Zeitstempel genommen... denn NULL is nun mal nix, was einen Timestamp enthält und dann wird NOW() genommen.

Code: Alles auswählen

SELECT
   CASE 
      WHEN auftrag.auftragseingang IS NULL THEN 'Total' 
      ELSE DATE_FORMAT(auftrag.auftragseingang, '%b %y')  
   END AS Monat,
   COUNT(DISTINCT auftrag.auftrag_id) as Bestellungen,
   SUM(warenkorb.anzahl*warenkorb.einzelpreis) AS Storno_Total
FROM 
   auftrag
   JOIN warenkorb 
      ON warenkorb.auftrag_id = auftrag.auftrag_id
WHERE 
   auftrag.auftrag_status =  '-1'
GROUP BY 
   LEFT(auftrag.auftragseingang, 7) 
   WITH ROLLUP
So sollte es klappen ;-)

Grüße BN

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag