Autor Zpráva
martin6541
Profil
Dobrý den.
Jsem nucen opět žádat o pomoc... pokud by řešení bylo složitější, nebráním se za to zapaltit.

Mám program na import dat z xml feedu. V poli pro akční cenu potřebuji načíst cenu, která je nižší ze dvou, které se nabízejí na dvou různých místech fedu.

Základní načtení hodnoty nějakého pole z feedu mám takto:
[CSV_COL(x)]

Takto mám hodnotu ceny, za kterou chci prodávat (načtení pole "[CSV_COL(2)]" odstraním tečku v tisících, vynásobení DPHčkem a slevím o 10%)
FLOOR ((REPLACE([CSV_COL(2)], '.', ''))*1.21*0.9)/1.21

Ve feedu mám ale u některých produktů v akci od dodavatele, kterou načítám takto (dostanu přesnou cenu a jen odstraním tečku v tisících a vynásobím DPH):
REPLACE([CSV_COL(4)], '.', '')*1.21;

Z marketingových produktů bych potřeboval načíst jeden nebo druhý, vždy podle toho, který bude nižší. Jak to napsat?
juriad
Profil
Mysql má funkci LEAST, která vrací menší ze seznamu (v tvém případě dvou) hodnot.
Kajman
Profil
Jen pozor na null hodnoty. Pokud cena v akci není vždy vyplněná a výraz je null, tak ho musíte obalit např. funkcí coalesce, kde místo null použijete velkou hodnotu nebo ten výraz pro základní cenu.
martin6541
Profil
No, stačí trochu nakopnout a šlo to. Měl sem strach, že to bude složité.
V tom feedu to mají děláno tak, že cena je vždy. A pokud není zboží v akci, tak je akční cena stejná jako běžná.
Děkuji. Snad to pomůže i jiným.
Kajman
Profil
Tak pokud nemůže být akční cena vyšší, tak v takovém případě můžete používat přímo jen tu akční cenu.
martin6541
Profil
Kajman:
Tak pokud nemůže být akční cena vyšší, tak v takovém případě můžete používat přímo jen tu akční cenu.
Nemůžu. Protože pokud zboží není v akci, tak tam výrobce šoupne cenu základní. Já si ji ale snižuji o 10% což akční nemůžu, protože tu musím dle smlouvy držet stejnou. Takže jednoduše nepoznám, kdy mohu a nemohu... prostě je to složitější :)
juriad
Profil
To pak může být zajímavé, pokud akční cena má menší slevu než 10%.

Základní cena: 100
Akční cena: 98
Tvá cena: 90

Je správně, že to to budeš prodávat za 90 a nikoli za akčních 98?

Pokud ne, tak budeš muset přidat nějakou další logiku. Například:

case when zakladni = akcni then zakladni * 0.9 else akcni end

Pomocí case bys také mohl snadno simulovat least.
martin6541
Profil
juriad:
To pak může být zajímavé, pokud akční cena má menší slevu než 10%.
v mém případě tomu tak není. Výrobce určuje prodejní cenu a já jako prodejce mohu slevit maximálně o 10%... ale jejich výprodeje jsou vždy větší sleva než 10%

ale v jiných případech u někho jiného to samozřejmě nastat může. Ale už snad není nikdo jiný, kdo by dostával tak de***í feed jako já :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0