Hi dedlfix,
Ob du das GROUP BY brauchst oder nicht, musst du dich nochmal fragen.
Wenn es zu jeder Rechnung nur eine Zeile gibt, dann ist das nicht notwendig.
Hatte ich schon gemerkt. Das 'GROUP BY' bewirkt in beiden Fällen nichts. Ich habe 2 Gutschriften zu RG mit der ID 3. Mit oder ohne 'GROUP BY' erreiche ich dasselbe Ergebnis.
Die Beschränkung auf Art='RG' in der Hauptquery ist korrekt. In der Subquery brauche ich nicht mehr zu differenzieren, weil das in (hier nicht erwähnten weiteren Feldern) per Flag bereits zu diesem Zeitpunkt aussortiert ist.
SELECT Nummer, Art, Datum, Betrag AS Ursprungsbetrag, IFNULL( Betrag - (
SELECT SUM( Betrag )
FROM _testtabelle t1
WHERE t1.ReferenzID = t2.ID ) , Betrag ) AS rest
FROM _testtabelle t2 WHERE t2.Art = 'RG'
Mein Problem ist die Stelle, an der ich das ganze einsetzen möchte. (ich hoffe, ich kürze jetzt sinnvoll und korrekt)
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,
...
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 ...
Ich möchte die abzuziehenden Gutschriften in das Alias 'Offen' integrieren, also an diese Stelle:
- SUM(IFNULL(z.zahlung, 0.0)) ********** AS Offen
********** = - (SELECT SUM(...usw.
Da knabbere ich grad dran.
Lukas