更新**:
我把题目改了,以更好地适应整体需要。我目前只有一张表,上面有我的卖家id、他们各自的母公司id、他们的佣金水平、他们销售的产品总额以及这些产品的总佣金(在案例陈述中计算,因为佣金因产品而异);但我继续遇到的问题是:
然后,我无法将我的查询结果横向排列,并计算出每个卖家因其下线卖家(他们已将低于他们的佣金水平的卖家)而应获得的子佣金。
原帖:
我有一个脚本,目前“工作”,但是近3600行的代码,并使超过50个数据库调用在一个单一的脚本。根据我的经验,没有办法真正“循环”脚本并将其最小化,因为对数据库的每个调用都是基于引用ID之前的子查询。
也许我可以举一个很简单的例子来说明我正在努力实现的目标,看看是否有人有过类似的经历。
在我的示例中,有三个表:
表1-卖方
ID | Comm_level | Parent
-----------------------------------
1 | 4 | NULL
2 | 3 | 1
3 | 2 | 1
4 | 2 | 2
5 | 2 | 2
6 | 1 | 3
如果ID是我们的一个销售代理的ID,comm_level将确定他销售的每种产品的佣金百分比,parent将指明为谁招募了该特定代理的ID。
在上面的例子中,1是顶级代理,他招募了2和3两个代理。2人招募了2名探员,4人和5人。3个招募了一个探员,6个。注:代理人不得招募与自己水平相当或更高的人。
表2——佣金
Level | Item 1 | Item 2 | Item 3
-----------------------------------------------------
4 | .5 | .4 | .3
3 | .45 | .35 | .25
2 | .4 | .3 | .2
1 | .35 | .25 | .15
此表根据每个代理的实际佣金水平列出了每个代理的佣金百分比(如果代理处于4级,则他将获得每售出一件商品50%的佣金,每售出一件商品40%的佣金,每售出一件商品2%的佣金,每售出一件商品30%的佣金,依此类推。
表3-出售物品
ID | Item
---------------------
4 | item_1
4 | item_2
1 | item_1
2 | item_3
6 | item_2
1 | item_3
这张桌子将实际出售的商品与出售商品的卖家配对。
生成佣金报告时,计算单个值非常简单。然而,根据次级卖家计算佣金是非常困难的。
在本例中,Seller ID 1获取每个售出商品的一部分。佣金百分比表示个人销售额或佣金的高度。
例如:
当卖家ID 6出售上述物品之一时,佣金树将如下所示:
-ID 6-成本的25%(项目1)
-ID 3-成本的5%(项目1)-(30%是他的佣金-25%是卖家ID 6的佣金)
-ID 1-成本的10%(项目1)-(40%是他的佣金-卖家ID 3的30%)
这必须从上到下为系统中的每个代理计算(因此,在我的庞大脚本中,while循环中的DB调用)。
有人有好的建议或样品,他们可能在过去使用?
编辑到佣金结构
注意:本例中的佣金是剩余的,这意味着如果卖家在第1个月内登入客户,他/她将为该客户获得相同的佣金,直到他们不再是订户。
最佳答案
使用抽象(函数和类)隐藏数据库访问。这使您在编写佣金计算算法时更加简洁。此外,它还允许您重用早期数据库查询的结果。最后,在物品销售表上一个循环就足够了,填写实际卖家和所有祖先的佣金。理想情况下,每个卖家只能从数据库中读取一次,无论是预先读取还是动态读取。
关于php - 如何通过MySQL预准备语句横向向上计算层次结构佣金,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4521191/