Problem mit Zeitabhängigen Preisen...

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.

Re: Problem mit Zeitabhängigen Preisen...

am 30.07.2007 13:59:04 von Nurkai

> Dein Problem ist im MySQL Handbuch im Kapitel "Tutorial" behandelt:

Das war die Lösung, vielen Dank!

Gruß Kai