Moin,
Hast du da ein konkretes Problem? Ich seh da jetzt erstmal nicht, was ich antworten könnte. Außer vielleicht, dass das CASE-Konstrukt durch ein einfaches IFNULL() ausgetauscht werden könnte, wenn das so wie es da steht alles ist und nicht noch weitere WHEN-Fälle fehlen.
Ja, ich habe einen konkreten mysql-Fehler.
Ich habe jetzt mal versucht, nur die Gutschriften als Summe zusammenzufassen. Ich habe das Konstrukt also an anderer Stelle eingebaut. Und erhalte einen Error1064 (use near FROM rechnungstabelle r2 ...)
SELECT
r.RID,
r.spalte1,
r.Spalte2,
m.Spalte1,
...,
SUM(IFNULL(z.zahlung, 0.0)) AS Gezahlt,
r.betrag *(1-
(CASE
WHEN z.Skonto = 0 THEN 0
WHEN ISNULL(z.Skonto) THEN 0
ELSE
z.Skonto
END)
/100) - SUM(IFNULL(z.zahlung, 0.0)) AS Offen,
r.Nummer,
z.text,
...
#---- Neu ---------#
(SELECT SUM(r.betrag
FROM rechnungstabelle r2
WHERE r2.ReferenzID = r.RID AND r2.Art='GU') AS rest)
#---- Neu ---------#
FROM rechnungstabelle r
LEFT JOIN zahlungen z ON r.RID = z.RID
LEFT JOIN mahnungen m ON (r.RID = m.RID AND m.aktiv = 1)
WHERE
...
AND r.bezahlt != 1
AND rz.Spalte1 != '1'
AND r.Art='RG'
AND ...
GROUP BY
r.KundeID,
r.nummer
ORDER BY ...
Wo mache ich den Fehler bei der Umsetzung?
Lukas