Problem mit Zeitabhängigen Preisen...
am 28.07.2007 11:10:31 von Nurkai
Hi @all,
ich hab hier ein dickes Problem mit zeitabhängigen Artikelpreisen und
brauche Eure Hilfe!
Preistabelle (gekürzt, nur wesentliche Cols):
CREATE TABLE artikelpreis (
AP_AID int(11), #Fremdschlüssel Artikeltabelle
AP_DATUM date , #Datum gültig AB(!)
AP_PREIS decimal(9,2) #Der Preis halt
);
insert into artikelpreis (AP_AID,AP_DATUM,AP_PREIS) values
(2349,'2006-01-01',1.50), #<-- den und ...
(2350,'2006-01-01',2.50),
(2350,'2007-04-15',2.69),
(2350,'2007-07-01',2.79), #<-- den und ..
(2350,'2007-10-01',2.89),
(2351,'2006-01-01',1.75); #<-- den und brauch ich
1) In dieser Preistabelle sind auch Preise für die Zukunft enthalten!
2) Gesucht werden alle Preise die für das AP_DATUM <=3D'2007-07-01'
gültig sind.
Ich suche ein Statement das mir das gewünschte Ergebnis liefert.
Wenn das Ganze auch noch als VIEW funzt (also, ohne subquery in der
Fromklausel), wäre das kaum zum aushalten...
Vielen Dank für Eure Mühe
Nurkai
Re: Problem mit ZeitabhängigenPreisen...
am 28.07.2007 22:51:57 von Oliver Lehmann
Hallo,
Schlauerweise macht man so etwas mit gueltig_ab/gueltig_bis Spalten um
dann mit between zu arbeiten. Applikatorisch bleibt dann die Terminierung
des vorher gueltigen Preises noetig wenn ein neuer Preis aktiv wird.
Ansonsten fallen mir auch auf die Schnelle nur Sachen mit ner Inline-View
ein. Wenn du den Preis von nur einem Artikel suchst koennte man auch mit
AP_DATUM <= NOW() ORDER BY AP_DATUM LIMIT 1 oder anstelle des LIMITs nur
ein einziges FETCH (wenn du mit nem CURSOR) arbeitest. Aber das ist alles
"unsauber"... pass die Tabelle an ;)
Gruesse, Oliver
--
Oliver Lehmann
http://www.pofo.de/
http://wishlist.ans-netz.de/
Re: Problem mit Zeitabhängigen Preisen...
am 29.07.2007 00:28:01 von Kai Ruhnau
Nurkai wrote:
^^^^^^
Hier gehört dein vollständiger Name hin, das erhöht die
Wahrscheinlichkeit, dass du Antworten bekommst.
> ich hab hier ein dickes Problem mit zeitabhängigen Artikelpreisen und
> brauche Eure Hilfe!
>
> Preistabelle (gekürzt, nur wesentliche Cols):
> CREATE TABLE artikelpreis (
> AP_AID int(11), #Fremdschlüssel Artikeltabelle
> AP_DATUM date , #Datum gültig AB(!)
> AP_PREIS decimal(9,2) #Der Preis halt
> );
> insert into artikelpreis (AP_AID,AP_DATUM,AP_PREIS) values
> (2349,'2006-01-01',1.50), #<-- den und ...
> (2350,'2006-01-01',2.50),
> (2350,'2007-04-15',2.69),
> (2350,'2007-07-01',2.79), #<-- den und ..
> (2350,'2007-10-01',2.89),
> (2351,'2006-01-01',1.75); #<-- den und brauch ich
>
> 1.) In dieser Preistabelle sind auch Preise für die Zukunft enthalten!
> 2.) Gesucht werden alle Preise die für das AP_DATUM <='2007-07-01'
> gültig sind.
>
>
> Ich suche ein Statement das mir das gewünschte Ergebnis liefert.
> Wenn das Ganze auch noch als VIEW funzt (also, ohne subquery in der
> Fromklausel), wäre das kaum zum aushalten...
Dein Problem ist im MySQL Handbuch im Kapitel "Tutorial" behandelt:
The Rows Holding the Group-wise Maximum of a Certain Field
http://dev.mysql.com/doc/refman/5.0/en/example-maximum-colum n-group-row.html
Grüße
Kai
--
This signature is left as an exercise for the reader.