ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
867
867
EMPFEHLEN
-
Hallo!
Ich habe zwei Tabellen (hier vereinfacht dargestellt):
Tabelle Bestellungen enthält die Felder BestId (INT), Gesamtpreis (DECIMAL),
Tabelle Buchungen enthält die Felder BuchungsId (INT), BestId (INT), Buchung (DECIMAL)
Eigentlich kann ich so alle Bestellungen raussuchen und den noch offenen Betrag ermitteln:
Das ganze funktioniert auch in MySQL 3.x; jetzt bin ich aber auf einem Server mit MySQL 4.1 und habe folgendes Problem:Code :1 2 3 4 5
SELECT be.BestId, be.Gesamtpreis, be.Gesamtpreis - SUM(bu.Buchung) AS BetragOffen FROM Bestellungen AS be LEFT JOIN Buchungen AS bu ON bu.BestId = be.BestId GROUP BY be.BestId
Wenn noch keine Buchungen vorhanden sind, ergibt SUM(bu.Buchung) NULL. In MySQL war [Betrag] - NULL = [Betrag], in MySQL ist aber leider [Betrag] - NULL = NULL.
Habt ihr eine Idee, wie ich die NULL in eine 0 (Null) umwandeln kann?
Vielen Dank für eure Vorschläge,
MamphilLösungsvorschlag: Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
Artikel & Tutorial: Wie realisiere ich eine Umkreissuche nach Postleitzahlen mit der kostenlosen OpenGeoDB in PHP?
-
Dann passe die Abfrage einfach daran an:
Code :1 2 3 4 5
SELECT be.BestId, be.Gesamtpreis, IF(be.Gesamtpreis IS NULL, 0, be.Gesamtpreis) - SUM(bu.Buchung) AS BetragOffen FROM Bestellungen AS be LEFT JOIN Buchungen AS bu ON bu.BestId = be.BestId GROUP BY be.BestId
Markus Wulftange
-
Super, vielen Dank für die schnelle Hilfe! An "IF" hatte ich gar nicht gedacht, ich wollte das irgendwie umwandeln...
Allerdings sieht mein Query so aus:Das Problem war schließlich, dass bei der Summe NULL rauskamCode :1 2 3 4 5
SELECT be.BestId, be.Gesamtpreis, be.Gesamtpreis - IF(SUM(bu.Buchung) IS NULL, 0, SUM(bu.Buchung)) AS BetragOffen FROM Bestellungen AS be LEFT JOIN Buchungen AS bu ON bu.BestId = be.BestId GROUP BY be.BestId

Danke nochmals,
MamphilLösungsvorschlag: Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
Artikel & Tutorial: Wie realisiere ich eine Umkreissuche nach Postleitzahlen mit der kostenlosen OpenGeoDB in PHP?
-
Hallo,
schöner geht's mit COALESCE:
Der COALESCE-Operator gibt immer den ersten Wert seiner Parameterliste zurück, der nicht NULL ist (oder NULL, wenn es einen solchen nicht gibt).Code :1 2
SELECT be.BestId, be.Gesamtpreis, be.Gesamtpreis - COALESCE(SUM(bu.Buchung), 0) AS BetragOffen …
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
Ähnliche Themen
-
Kann MySQL rechnen?
Von Joe im Forum Coders TalkAntworten: 5Letzter Beitrag: 04.10.10, 15:12 -
Mysql Rechnen
Von ryserstephan im Forum PHPAntworten: 0Letzter Beitrag: 10.09.07, 15:31 -
Mysql rechnen HILFE
Von kames im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 30.08.06, 16:36 -
Mysql Rechnen
Von Matthiasghh im Forum PHPAntworten: 12Letzter Beitrag: 21.08.05, 21:37 -
Rechnen mit PHP und mySQL
Von emplace im Forum PHPAntworten: 7Letzter Beitrag: 06.01.02, 14:34





Zitieren

Login





