Mailinglisten-Archive |
Hallo Andre, > Kunde, PreisA, PreisB, ValidFrom, ValidTo, Zaehler > > Es kann also je Kunde mehrere Einträge geben, ich will aber > den NEUESTEN > haben. Das ist der mit dem jüngsten ValidFrom-Datum und ohne > ValidTo-Datum bzw. der mit dem höchten Zaehler je Kunde. die doppelte Bedingung ist schwierig in einem select unterzubringen, da mysql (noch) keine unions unterstützt. Jüngstes validFrom: Wenn IMMER validTo NULL ist, dann so: "select validFrom, kunde where validTo IS NULL" Wie gesagt, WENN validTo IMMER NULL ist!! Wenn Du immer das kleinste Datum haben willst, dann gruppieren: "select min(validFrom), kunde group by kunde" So erhälst Du eine Liste mit genau einem EINTRAG PRO KUNDE. Höchsten Zähler analog: "select max(zaehler), kunde group by kunde" So erhälst Du eine Liste mit genau einem EINTRAG PRO KUNDE. Eine Variante zur Simulation des union ist die, wenn Du die beiden Abfragen nacheinander ausführst und die Ergebnisse, d. h. die Kundenkennung, in eine temporäte Tabelle schreibst und dann Deine Abrechnung laufen läßt. Evtl. besteht auch die Möglichkeit, Deine Tabelle Konditionen noch einmal zu überarbeiten. Wie wäre es, die aktuellen Daten UND die Daten des Vormonats in eine eigene Tabelle zu schreiben und am Monatsende während des Abrechnungslaufes die Daten in eine andere Tabelle auszulagern? Könnte evtl. auch die Performance im laufenden Monat drastisch erhöhen, da Du nur die aktuellen Daten im Zugriff hast. Gruß Alexander --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive