【发布时间】:2012-10-11 16:39:22
【问题描述】:
我需要找到一种更好的方法来获得我们网店中每件商品价格的折扣,具体取决于客户拥有的价格表或价格表/折扣表。我认为只需一个查询而不是我今天的 5 个查询就可以做到这一点,但我真的不知道从哪里开始。
我们所有的客户都有价目表,有些客户同时拥有价目表和一份额外的折扣清单。今天我们有大约 25 个不同的价格表和大约 100 个额外的折扣表。 所有价目表的结构都相同;他们有一个价格组和百分比折扣。
例如价格表 01 可能看起来像
20
B 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。
非常感谢
最好的问候琳达
【问题讨论】:
标签: php mysql join mysqli union