MySQL可以从多级父子关系中计算总数吗?

时间:2011-02-21 19:26:17

标签: php mysql

为简单起见,我们假设存在以下表格:

表1 - 卖方名单

ID |  Parent_ID  |  Percentage
----------------------------
1  |    -        |     .5
2  |    1        |     .4
3  |    2        |     .3

此表显示了3个卖家。 1,主要父母,2,父母1和3与父母2和超父母1的个人ID 1对所有个人销售获得50%的佣金加上他们的百分比水平之间的任何子代理的佣金差额。

例如:

下表列出了代理商的销售清单:

表2 - 代理商销售

ID   |   Cost
-------------
2    |   10.00
2    |   5.00
3    |   9.00

在这种情况下:

  • 卖家ID 3将获得30%的销售额,或2.70美元
  • 卖家ID 2将获得他/她的销售额的40%(.4 * $ 5)+(。4 * $ 10)= $ 6 PLUS覆盖他/她的孩子。在这种情况下,他/她赚取佣金差额加上销售金额(.4 - .3)* 9.00美元= 0.90美元,因此卖家ID 2的总收入为6.90美元。
  • 卖家ID 1没有个人销售,但是他/她的孩子和所有子项目都获得了优先权:(。5-.4)(10.00)+(。5-.4)(5.00) +(。5-.4)*(9.00)= $ 2.40

超级父母(在这种情况下为ID 1)可能是ID 3的直接父母并获得(.5-.3)。也就是说,父子关系并不总是线性的,并且没有设置层次结构所在位置的深度。

最终,我正在尝试开发一个mysql或php(或组合)公式,以确定上述场景中每个卖家应得的结果。根据这些销售额计算每个卖家的销售总额和个人卖家收入很容易。根据3的制作,弄清楚如何将收益应用于ID 1和2是另一个故事。

此领域的任何先前经验?

1 个答案:

答案 0 :(得分:1)

不幸的是,MySQL不会让树变得容易。

MSSQL有一种称为公用表表达式的东西,可以使这更容易。

使用MySQL,最好的解决方案是使用递归存储过程。但那些可能很难做对。

相反,我会建议另一张桌子存放一个孩子的所有父母以及他们上面多少级别。这会使您的插入和删除代码变得复杂,因为此表需要保持最新(触发器可以提供帮助),但它会使您的计算更加容易。