Wenn Ausgabe NULL

Sven4972

Mitglied
Hallo,

ist es möglich wenn das Ergebnis einer Abfrage gleich 'NULL' ist,
MySQL zu sagen das daraus 0.00 gemacht werden soll?


LG Sven
 
Hallo,

bei folgender Abfrage kann als Ergebniss NULL ausgegeben werden, da es noch keine Einträge als Ausgabe gibt:

PHP:
SELECT nickname, SUM(betrag) AS betrag FROM konto
WHERE typ='Ausgabe' GROUP BY nickname

So habe ich es versucht:

PHP:
SELECT nickname, IFNULL(SUM(betrag),0.00) AS betrag
FROM konto WHERE typ = 'Ausgabe'
GROUP BY nickname

Dort wird aber immer noch NULL und nicht 0.00 ausgegeben.

Was ist denn da noch falsch dran?


LG Sven
 
Zuletzt bearbeitet:
Du summierst ja in diesem Falle alle Werte, dabei werden die NULL-Werte ignoriert und es entsteht eine Wertmäßige Summe. Diese ist dann nicht mehr NULL.

Hast du es einmal folgendermaßen probiert:
SQL:
 SUM(IFNULL(betrag,0.00)) AS betrag
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

da bekomme ich immer noch die Ausgabe von NULL und nicht 0.00.

Hier ist mal der ganze Code:

PHP:
SELECT DISTINCT n.nickname, plus.betrag AS Einnahmen, minus.betrag AS Ausgaben,
                plus.betrag - minus.betrag AS saldo FROM konto n
LEFT JOIN ( SELECT nickname, SUM(IFNULL(betrag,0.00)) AS betrag FROM konto
            WHERE typ='Einnahme' GROUP BY nickname ) plus ON n.nickname = plus.nickname
LEFT JOIN ( SELECT nickname, SUM(IFNULL(betrag,0.00)) AS betrag FROM konto
            WHERE typ='Ausgabe' GROUP BY nickname ) minus ON n.nickname = minus.nickname 
ORDER BY n.nickname

Und ein paar Daten aus der DB Tabelle hänge ich auch mal mit an.


LG Sven
 

Anhänge

Ok, jetzt wird es eindeutig :-)
Du verwendest die Funktion an der falschen Stelle. Richtig muss es folgendermaßen heißen:
SQL:
SELECT DISTINCT n.nickname, IFNULL(plus.betrag,0.00) AS Einnahmen, IFNULL(minus.betrag,0.00) AS Ausgaben, 
                IFNULL(plus.betrag - minus.betrag,0.00) AS saldo FROM konto n 
LEFT JOIN ( SELECT nickname, SUM(betrag) AS betrag FROM konto 
            WHERE typ='Einnahme' GROUP BY nickname ) plus ON n.nickname = plus.nickname 
LEFT JOIN ( SELECT nickname, SUM(betrag) AS betrag FROM konto 
            WHERE typ='Ausgabe' GROUP BY nickname ) minus ON n.nickname = minus.nickname  
ORDER BY n.nickname

Bei Select ergibt sich ja NULL, weil keine Daten dafür vorhanden sind, in der Unterabfrage greift es ja nur, wenn Daten eruiert wurden.
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

das scheint immer noch nicht richtig zu funktionieren.
Denn da wird beim Saldo auch 0.00 ausgegeben, wenn es noch kein
Eintrag bei Einnahme bzw Ausgabe gibt.
Wenn zum Beispiel der Saldo 20.00 sein müsste.



LG Sven
 
Zuletzt bearbeitet:
Hallo,

ich hab jetzt die Lösung gefunden:

PHP:
SELECT DISTINCT n.nickname, IFNULL(plus.betrag,0.00) AS Einnahmen, IFNULL(minus.betrag,0.00) AS Ausgaben, IFNULL(plus.betrag,0.00) - IFNULL(minus.betrag,0.00) AS saldo
  FROM konto n
  LEFT JOIN ( SELECT nickname, SUM(betrag) AS betrag FROM konto
         WHERE typ='Einnahme' 
         GROUP BY nickname ) plus
    ON n.nickname = plus.nickname
  LEFT JOIN ( SELECT nickname, SUM(betrag) AS betrag FROM konto
         WHERE typ='Ausgabe'
         GROUP BY nickname ) minus
    ON n.nickname = minus.nickname 
ORDER BY n.nickname


LG Sven
 
Zurück