phpbar.de logo

Mailinglisten-Archive

Select und Maximalwert

Select und Maximalwert

Alexander Friess mysql_(at)_lists.phpcenter.de
Mon, 14 May 2001 08:40:11 +0200


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