Franco: Addieren, Subtrahieren, Vorzeichen wechseln usw.

Hallo Forum,

ich habe eine (durch dedlfix und Vinzenz Hilfe) gefunden Query, die ich um 2 Punkte erweitern möchte. Leider ist der Thread schon im Archiv, weshalb ich einen neuen Thread eröffnen muß.

Ich erstelle per php eine temporäre Tabelle dieser Art:

  
CREATE TEMPORARY TABLE praefix_tmp (  
`ID` INT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
`Monat` VARCHAR( 10 ) NOT NULL  
) ENGINE = MYISAM ;  
  
INSERT INTO `tmp` (`ID`, `Monat`) VALUES  
(1, '2010|10'),  
(2, '2010|09'),  
(3, '2010|08'),  
(4, '2010|07'),  
(5, '2010|06');  

Danach erstelle ich eine weitere temporäre Tabelle, in die ich Daten aus anderen Tabellen hineinpacke:

  
CREATE TEMPORARY TABLE monatsdaten  
SELECT FROM_UNIXTIME(r.Timestamp, '%Y%|%m') AS ym,  
sum(b.Menge*b.Preis*  
(CASE  
WHEN b.Faktor = 'ja' THEN 1  
WHEN b.Faktor = '' THEN 1  
WHEN b.Faktor = '100' THEN 1  
WHEN b.Faktor = 'nein' THEN 0  
WHEN ISNULL(b.Faktor) THEN 1  
END) ) AS count  
FROM praefix_TabelleB b  
JOIN praefix_TabelleR r  
ON b.G_ID = r.G_ID  
WHERE  
b.Art = 'A' AND  
b.Status = 'XX'  
AND FROM_UNIXTIME(r.Timestamp) > NOW() - INTERVAL 1 YEAR  
GROUP BY ym DESC  

Und zum guten Schluss joine ich diese beiden Tabellen:

  
SELECT t.Monat, m.COUNT as count  
from praefix_tmp t  
LEFT JOIN monatsdaten m  
ON t.Monat = m.ym  
ORDER BY t.Monat DESC  

um eine schöne Tabelle, nach Monaten sortiert zu erhalten.

Soviel zum Hintergrund meiner Frage.

Im 2. Teil, in dem ich die temporäre Monatsdaten-Tabelle erstelle, möchte ich nun erweitern.

Und zwar gibt es nicht nur den Status 'XX', sondern auch 'YY' und 'ZZ'.

Und ich möchte gerne, dass analog zu den XX-Werten die YY-Werte ebenfalls eingetragen werden und die ZZ-Werte mit negativem Vorzeichen eingetragen werden.

Ist das verständlich ausgedrückt? Und falls ja, wie kann ich das in der Query unterbringen?

Viele Grüße, Frank

  1. Und ich möchte gerne, dass analog zu den XX-Werten die YY-Werte ebenfalls eingetragen werden und die ZZ-Werte mit negativem Vorzeichen eingetragen werden.

    Diese Werte sollen nicht zusätzlich eingetragen werden, sondern gleich mit der Summe der XX-Werte verrechnet werden.

    Also XX-Werte + YY-Werte - ZZ-Werte.

    Beispiel:

    Summe Status XX im entsprechenden Monat wäre 100.
    Summe Status YY im entsprechenden Monat wäre -10.
    Summe Status ZZ im entsprechenden Monat wäre +10.

    Dann sollte mein Ergebniss für diesen Monat 80 sein,
    denn 100+(-10)-(+10) = 80.

    Bekommt man sowas überhaupt in 1 einzige Query hinein?

    Grüße, Frank

    1. Hat denn gar keiner eine Idee?

      Gruß, Frank