我需要找到一种更好的方法来获取网店中每个商品价格的折扣,具体取决于客户的价目表或价格表/折扣清单。我认为这可以只用一个查询而不是今天的5个查询,但我真的不知道从哪里开始。
我们所有的客户都有一个价格表,有些还有价格表和一个额外的折扣清单。今天我们有大约25种不同的价格表和大约100种额外的折扣清单。 所有的价格表都是以同样的方式构建的;他们有价格组和折扣百分比。
例如价格表01可能看起来像
A 20
B 35
C 20
额外折扣清单以不同方式构成,可以具有固定价格或百分比。它还有三个不同的优先级:基于商品代码的折扣(优先级为1),基于类别(优先级为2)和基于价格组(优先级为3)。
折扣列表0013可能如下所示:
在文章标签
中PL-2344-444 40(%)
P-0455-23 200(SEK)
在类别标签
中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'且PRICEGROUP ='F'
我将函数调用如下 $ 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。
非常感谢
最好的问候linda
答案 0 :(得分:0)
您可以使用union进行查询:
(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
列和订单确保您获得正确排序的折扣。