SQL Abfrage rechnet nicht korrekt

SilentHunter124

Neuer Benutzer
Beiträge
2
Hallo,

ich habe leider ein kleines Problem mit folgender SQL Abfrage:

Code:
SELECT l.id, l.bezeichnung, l.anzahl, l.pid, p.name, p.betrag,(l.anzahl-(SELECT SUM(anzahl) FROM `scvv_liegenschaften_liste` WHERE lid = l.id)) AS NOCH FROM `scvv_liegenschaften_liste_db` l,`scvv_liegenschaften_pfandsaetze` p WHERE (l.anzahl-(SELECT SUM(anzahl) FROM `scvv_liegenschaften_liste` WHERE lid = l.id)) > 0 AND pid = p.id

Speziell diese Anweisung macht Probleme:

Code:
WHERE (l.anzahl-(SELECT SUM(anzahl) FROM `scvv_liegenschaften_liste` WHERE lid = l.id)) > 0

Wenn ich diese weglasse, sehe ich auch den Grund. Im Feld NOCH steht bei einigen Einträgen NULL, vermutlich weil die Unterabfrage ein leeres Resultat zurückliefert.

Wie kann man per SQL sagen, dass NULL = 0 entspricht und damit auch richtig rechnet?
 
Werbung:

Tommi

Datenbank-Guru
Beiträge
285
Hi,

ich glaube, die eleganteste Methode wäre folgende:

WHERE (l.anzahl-COALESCE((SELECT SUM(anzahl) FROM `scvv_liegenschaften_liste` WHERE lid = l.id), 0)) > 0

Der Befehl COALESCE() zieht den ersten Wert aus einer Reihe von Komma-getrennten Ausdrücken, der nicht NULL ist.
Da der erste Wert in der Unterabfrage NULL sein kann, wird im Folgenden der Konstante Wert "0" der Ausdruckliste herangezogen.
Voraussetzung ist natürlich noch, dass l.antahl ebenfalls nicht NULL sein darf.

Viele Grüße,
Tommi
 
Werbung:
Oben