Selection von Preisgruppen mit Währungsaufschlag

Selection von Preisgruppen mit Währungsaufschlag

am 23.09.2006 18:09:05 von Michael Kostmann

Hallo,

in der folgenden Abfrage werden Preisaufschläge je Preisgruppe auf den
VK-Preis addiert. Das hat auch die ganze Zeit wunderbar funktioniert.
Jetzt kommt aber noch ein Währungsaufschlag für eine nicht Euro
Währung hinzu. Dieser ist in "$shop_waehr_u" enthalten.
Es funktioniert auch alles, nur das die Preisgruppen in "von_preis"
und "bis_preis" noch in Euro Werten selectiert werden. Es müsste aber
mit dem Währungsaufschlag selectiert werden. Also den
Währungsaufschlag vor der Selection nach von_preis und bis_preis
berechnen.

Ich dachte eigentlich, das in dieser Zeile
***
if (proz_aufschlag>0,($vk2*$shop_waehr_u)+($vk2*(proz_aufschlag /100)),
0),$vk2) AS vkpreis
***
in $vk2 der VK mit Währungsaufschlag enthalten wäre und dann damit die
Selection durchgeführt wird. Dem ist aber nicht so.

Es wird in der darauffolgenden Zeile:
***
where ((".$vk2." > von_preis) and (".$vk2." <= bis_preis)
and (".$shop_kdnr." = ".$shop_dbname.".rs_preis_calc.shop_id)
and (".$kd_preis_gruppe." =
".$shop_dbname.".rs_preis_calc.preisgruppe))"; $w=1;
***
ohne den Währungsaufschlag abgefragt. Warum ist das so? Was habe ich
da übersehen? Irgendwie sehe ich vor lauter Bäumen den Wald nicht
mehr.

Zum besseren Verständnis habe ich hier noch den wesentlichen,
kompletten und unveränderten Teil der bisher einwandfrei
funktionierenden Abfrage ohne den Währungsaufschlag:
***
$query.=$shop_dbname.".rs_preis_calc.von_preis, ".
$shop_dbname.".rs_preis_calc.bis_preis, ".
$shop_dbname.".rs_preis_calc.euro_aufschlag, ".
$shop_dbname.".rs_preis_calc.proz_aufschlag,
GREATEST(if (euro_aufschlag>0, ($vk2) + euro_aufschlag, 0),
if (proz_aufschlag>0,($vk2)+($vk2*(proz_aufschlag/100)), 0),$vk2) AS
vkpreis
from ".$dbname.".hsp_reifen, ".$shop_dbname.".rs_preis_calc
where ((".$vk2." > von_preis) and (".$vk2." <= bis_preis)
and (".$shop_kdnr." = ".$shop_dbname.".rs_preis_calc.shop_id)
and (".$kd_preis_gruppe." =
".$shop_dbname.".rs_preis_calc.preisgruppe))"; $w=1;
***

Bin für jeden Tipp dankbar.

Gruß
Michael

Re: Selection von Preisgruppen mit Währungsaufschlag

am 24.09.2006 02:18:57 von Johannes Vogel

Hi Michael

Michael Kostmann wrote:
> in der folgenden Abfrage werden Preisaufschläge je Preisgruppe auf den
> VK-Preis addiert. Das hat auch die ganze Zeit wunderbar funktioniert.
> Jetzt kommt aber noch ein Währungsaufschlag für eine nicht Euro
> Währung hinzu. Dieser ist in "$shop_waehr_u" enthalten.

....

> Bin für jeden Tipp dankbar.

Gib dir ein `print $query` aus, schreibe dazu das aufs Minimum
reduzierte DB-Design an und sende uns das. Diesen unübersichtlichen Code
mag ich nicht studieren. Wir sind hier ja in dcdm.

Johannes

Re: Selection von Preisgruppen mit Währungsaufschlag

am 24.09.2006 04:53:36 von Michael Kostmann

Hallo Johannes,

Johannes Vogel schrieb:
>Gib dir ein `print $query` aus, schreibe dazu das aufs Minimum
>reduzierte DB-Design an und sende uns das.
>
>Johannes

Ich habe hier den auf das notwendige reduzierten Query und darunter
das minimierte db Design.
Hoffentlich tut es das etwas vereinfachen.

So wie es unten zu sehen ist, funktioniert es.
Jetzt muss aber noch ein Währungsaufschlag ($shop_waehr_u) auf den
Vk1, Vk2, Vk3 gerechnet werden und das bevor in "where ((Vk3 >
von_preis...." der fest_aufschlag oder proz_aufschlag addiert wird.

$shop_waehr_u = 13,50

select distinct
db.table.ID,
db.table.Jahreszeit,
[…]
db.table.Hersteller,
db.table.Bestand, Vk4,Vk3,Vk1,
db.rs_preis_calc.von_preis,
db.rs_preis_calc.bis_preis,
db.rs_preis_calc.fest_aufschlag,
db.rs_preis_calc.proz_aufschlag,
GREATEST(if (fest_aufschlag>0, (Vk3*0) + fest_aufschlag, 0), if
(proz_aufschlag>0, (Vk3*0)+(Vk3*(proz_aufschlag/100)), 0),Vk3) AS
vkpreis from db.table, db.rs_preis_calc where ((Vk3 > von_preis) and
(Vk3 <= bis_preis) and (8831 = db.rs_preis_calc.shop_id) and (0 =
db.rs_preis_calc.preisgruppe))


$shop_waehr_u = 15,30

db.table:
ID | Jahreszeit | […] | Bestand | Vk1 | Vk2 | Vk1 |
1 | Sommer | […] | 100 | 15,80 | 13,50 | 12,90 |
[…]

db.rs_preis_calc:
ID | shop_id | von_preis | bis_preis | fest_aufschlag |
proz_aufschlag | preisgruppe |

1 | 99991 | 0,00 | 49,99 | 10,00
| 0 | 0 |
2 | 99991 | 50,00 | 99,99 | 15,00
| 0 | 1 |

Tausend Dank im voraus

Gruß Michael