Lukas: mysql5: Query gesucht (JOIN)

Beitrag lesen

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