2

我需要找到一种更好的方法来获得我们网店中每件商品价格的折扣,具体取决于客户拥有的价格表或价格表/折扣表。我认为这可以只用一个查询而不是我今天的 5 个查询来完成,但我真的不知道从哪里开始。

我们所有的客户都有一个价目表,有些客户同时有价目表和一个额外的折扣表。今天我们有大约 25 个不同的价格表和大约 100 个额外的折扣表。所有价目表的结构都相同;他们有一个价格组和百分比折扣。

例如价格表 01 可能看起来像

一个 20

乙 35

C 20

额外折扣清单以不同的方式构建,并且可以具有固定的价格或百分比。它还具有三个不同的优先级:基于商品代码的折扣(具有优先级 1)、基于类别(具有优先级 2)和基于价格组(具有优先级 3)。

折扣清单 0013 可能如下所示:

在文章选项卡中

PL-2344-444 40 (%)

P-0455-23 200 (瑞典克朗)

在类别选项卡中

C12 50 (%)

N12 35 (%)

今天我有三个不同的查询,看看我是否在折扣列表中获得成功:

首先,我检查我是否在优先级 1 中被击中:(FIXED 返回 f 和 PERCENTAGE r)

SELECT DISCOUNT, FIXED, PERCENTAGE FROM PUPRIREG 
WHERE ARTCODE = 'JO-23455' AND DISCOUNTLIST = '0013'

如果上面返回 0,我做第二个查询,优先级 2:

SELECT DISCOUNT, FIXED, PERCENTAGE FROM PUPRIREG 
WHERE CATEGORY = 'C15' AND DISCOUNTLIST = '0013'

最后一个优先级3:

SELECT DISCOUNT, FIXED, PERCENTAGE FROM PUPRIREG 
WHERE PRICEGROUP = 'F' AND DISCOUNTLIST = '0013'

如果没有额外的折扣列表返回 0,我会从价格表中获得折扣

从 PUPRIREG 中选择折扣,其中 PRICELIST = '01' AND PRICEGROUP = 'F'

我调用如下函数 $discount = discount($articlecode, $category, $pricegroup);

function discount($articlecode, $category, $pricegroup){

$articlecode = sanitizingData($articlecode); 

$category = sanitizingData($category);

$pricegroup = sanitizingData($pricegroup);

// do priority 1

// prio 2

// prio 3

// pricelist

return $discount;

}

如果有人能告诉我如何做到这一点,我会很高兴。我正在使用 mysqli 和 php。

非常感谢

最好的问候琳达

4

1 回答 1

0

您可以使用联合进行查询:

(SELECT DISCOUNT, FIXED, PERCENTAGE, 1 priority FROM PUPRIREG 
    WHERE ARTCODE = 'JO-23455' AND DISCOUNTLIST = '0013')
union
(SELECT DISCOUNT, FIXED, PERCENTAGE, 2 priority FROM PUPRIREG 
    WHERE CATEGORY = 'C15' AND DISCOUNTLIST = '0013')
union
(SELECT DISCOUNT, FIXED, PERCENTAGE, 3 priority FROM PUPRIREG 
    WHERE PRICEGROUP = 'F' AND DISCOUNTLIST = '0013')
union
(SELECT DISCOUNT, 0 fixed, 0 percentage, 4 priority FROM PUPRIREG
    WHERE PRICELIST = '01' AND PRICEGROUP = 'F')
order by priority;

额外的人工priority列和顺序确保您获得正确排序的折扣。

于 2012-10-21T20:38:58.753 回答