misterunknown: Doppelte Einträge trotz distinct

Beitrag lesen

Moin,

würde das Problem lösen, aber dann  wird mir anscheinend nur die Rechnung mit der höchsten m.ID angezeigt.
Ich dachte, es würden so alle Rechnungsnummern je 1 mal angezeigt und falls 2 (oder mehr) Mahnstati vorhanden wären, würde der mit der höchsten ID genommen?

Ich bin kein SQL-Experte, aber die Methode mit dem HAVING ist meines Erachtens hier nicht zielführend. Ich würde das vielleicht folgendermaßen machen, mit der Gewissheit, dass es irgendwie noch besser geht:

SELECT DISTINCT  
   r.Rechnungsnummer,  
   ADDDATE(r.R_Datum , INTERVAL r.Faelligkeit DAY),  
   m.Mahnstatus,  
   ADDDATE(m.M_Datum, INTERVAL m.Faelligkeit DAY)  
FROM rechnungen r  
LEFT JOIN mahnungen m  
   ON r.RechnungenID = m.RechnungenID  
   AND m.Id = (SELECT MAX(tmp.Id) from mahnungen tmp WHERE tmp.RechnungenID = r.RechnungenID)  
WHERE  
   r.B_art="RG"

Damit joinst du immer nur den Datensatz mit der größten ID aus Mahnungen, welche mit der Rechnungs-ID übereinstimmt, an das Ergebnis.

Wie gesagt: Das ist eine Lösung, die wahrscheinlich unperformant und verbesserungswürdig ist. Vielleicht meldet sich noch ein SQL-Experte. Oder zumindest ein Amateur. Oder wenigstens ein Semi-Amateur ;)

Grüße Marco

--
Ich spreche Spaghetticode - fließend.