tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
867
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jun 2004
    Ort
    Garching b. München
    Beiträge
    602
    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:
    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
    Das ganze funktioniert auch in MySQL 3.x; jetzt bin ich aber auf einem Server mit MySQL 4.1 und habe folgendes Problem:
    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,
    Mamphil
     
    Lö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?

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  3. #3
    Registriert seit
    Jun 2004
    Ort
    Garching b. München
    Beiträge
    602
    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:
    Code :
    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
    Das Problem war schließlich, dass bei der Summe NULL rauskam

    Danke nochmals,
    Mamphil
     
    Lö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?

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    schöner geht's mit COALESCE:
    Code :
    1
    2
    
    SELECT be.BestId, be.Gesamtpreis, be.Gesamtpreis  - COALESCE(SUM(bu.Buchung), 0) AS BetragOffen
    …
    Der COALESCE-Operator gibt immer den ersten Wert seiner Parameterliste zurück, der nicht NULL ist (oder NULL, wenn es einen solchen nicht gibt).

    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

  1. Kann MySQL rechnen?
    Von Joe im Forum Coders Talk
    Antworten: 5
    Letzter Beitrag: 04.10.10, 15:12
  2. Mysql Rechnen
    Von ryserstephan im Forum PHP
    Antworten: 0
    Letzter Beitrag: 10.09.07, 15:31
  3. Mysql rechnen HILFE
    Von kames im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 30.08.06, 16:36
  4. Mysql Rechnen
    Von Matthiasghh im Forum PHP
    Antworten: 12
    Letzter Beitrag: 21.08.05, 21:37
  5. Rechnen mit PHP und mySQL
    Von emplace im Forum PHP
    Antworten: 7
    Letzter Beitrag: 06.01.02, 14:34