dedlfix: Doppelte Einträge trotz distinct

Beitrag lesen

Tach!

Sehe will ich nur 1 Rechnungsnummer, aber die Info, auf welchem Mahnstatus sie gerade steht, benötige ich ebenfalls. Daraus generiere ich einen Link, der beim Anklicken ein Emailformular generiert, das den nächst höheren Mahnstatus einleitet.

Ich finde grad keine einfache Lösung dafür. Das ist etwas komplexer als gedacht. Du brauchst aus der Mahnungstabelle zu jeder Rechnungsnummer den neuesten Datensatz. Da hören schon meine Ideen auf. GROUP BY ist nicht verwendbar, wenn man es ordentlich machen will. Wenn nicht, ist es unsicher, weil zwar das MAX(Datum) aus der Gruppe, aber nicht der zugehörige Status ermittelt werden kann.

Am einfachsten sind korrelierte Subselects, aber da du zwei Felder benötigst, sind die weniger gut verwendbar.

SELECT  
  r.*,  
  (SELECT status FROM m WHERE RechnungenID = r.RechnungenID ORDER BY date DESC LIMIT 1),  
  (SELECT date FROM m WHERE RechnungenID = r.RechnungenID ORDER BY date DESC LIMIT 1)  
FROM r

Zumindest bringt das das gewünschte Ergebnis, ist aber umständlich. Die Subquery lässt sich in der Form auch nicht ins FROM verlegen, dann könnte sie zwar mehr als ein Feld selektieren, sind aber nicht korrelierbar. Die Auswertung der SELECT-Klausel der Hauptquery ist zu dem Zeitpunkt noch nicht an der Reihe. Das Herauspicken des einen gewünschten m-Datensatzes zu einer RechnungenID geht hier nur über GROUP BY, mit den bereits genannten Unwägbarkeiten. - Ich muss hier erstmal passen.

dedlfix.