更新**:
我把题目改了,以更好地适应整体需要。我目前只有一张表,上面有我的卖家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/

10-13 04:43