2013-03-21 84 views
0

你好人Stackoverflow!我一直在挑战自己的大脑。Mysql,当变量依赖于其他选择时计算sum()

我有一个查询来计算出售的特定销售产品的总和,这很容易。这让我疯狂的挑战的第二部分是:

有一些销售由“捆绑”组成,这意味着单个产品的总和不等于最终价格。为了销售成捆,它必须有一个“电视”产品。电视产品可以自己出售,并有相关的价格,但是当它是捆绑包的一部分时,价格是可变的。以下是我迄今为止:

定价矩阵定

ProdDescription  ProductID Rank A  Rank B Rank C 
       Phone   1  $229.00 $92.00 $18.00 
      Long Distance  2  $46.00 $46.00 $18.00 
      Internet 786K  3  $103.00  $84.00 $23.00 
      Internet 1.5M  4  $113.00  $94.00 $23.00 
      Internet 3M   5  $118.00 $99.00 $23.00 
      Internet 10M  6  $123.00  $104.00  $23.00 
      Internet 25M  7  $141.00  $113.00  $41.00 
      Ultra Internet  8  $188.00  $94.00 $23.00 
      TV     9  $123.00  $95.00 $23.00 
      TV and Ultra Int    $311.00 $234.00  $141.00 
      TV and Phone     $352.00 $91.00 $46.00 
      TV, Phone, & Long Dist  $398.00 $229.00  $137.00 
      TV, Phone, & any Int   $465.00 $268.00  $206.00 
      TV,Phone,Long Dist,&any Int $515.00 $274.00  $229.00 

正如你可以看到我已经没有分配的productID对束,B/C我试图创建束单独的产品ID和甚至考虑过如果单个产品被选中时使用php来根据一组规则以编程方式分配产品ID,但是然后我失去了最终统计/查询构成该捆绑/销售的单个产品的能力。

我是否在推翻这个?是否有可能只使用SQL或至少限制PHP方面?

下面的表格显示了该TV产品的计算价格,该价格基于哪个包和它所属的排名。我创建了这个,因为我正在考虑如果该TV产品出现在连接计算中,则使用if语句引用此表。

            A  B  C 
    DoublePlay-Ultra Internet     $123 $140 $118 
    DoublePlay-Phone        $123 $(1) $28 
    TriplePlay-Phone & Long Distance    $123 $91  $101 
    TriplePlay-Phone & Internet 786K    $133  $92  $165 
    TriplePlay-Phone & Internet 1.5 M    $123 $82  $165 
    TriplePlay-Phone & Internet 3M     $118  $77  $165 
    TriplePlay-Phone & Internet 10M    $113  $72  $165 
    TriplePlay-Phone & Internet 25M    $95  $63  $147 
    TriplePlay-Phone & Ultra Internet    $48  $82  $165 
    QuadPlay-Phone & Long Dist & Inter 786K  $137  $52  $170 
    QuadPlay-Phone & Long Dist & Inter 1.5 M  $127  $42  $170 
    QuadPlay-Phone & Long Dist & Inter 3M   $122  $37  $170 
    QuadPlay-Phone & Long Dist & Inter 10M   $117  $32  $170 
    QuadPlay-Phone & Long Dist & Inter 25M   $99 $23  $152 
    QuadPlay-Phone & Long Dist& Ultra Inter  $52  $42  $170 

这个问题是越来越离谱了,这样我会停在那里,但请这是否有道理,没有任何人有什么建议?非常感谢!

+0

凡“任何INT”被提供,在将“超”不能选择什么情况?它与本地可用性有关吗? – Strawberry 2013-03-21 14:43:16

+0

Ultra是最高/最快的速度。如果我们正在测试任何互联网,它将被包含在“或()”类型的计算中,但就Double Play捆绑而言,Ultra是唯一符合第一个双重播放TV&Ultra的速度互联网。那有意义吗?再次感谢您的帮助! – alex 2013-03-21 16:08:43

回答

1

考虑产品的ID与9位...... 当他们购买的电视我会指定产品如下

它可以 分离的9位如下

第一位数字为1(只是为了让其他数字为零 电视的第二和第三位数 电话的第四和第五位数 互联网的第六和第七位数 第八位和第九位数字为长距离...

如:

个人物品价值 电视将是1 10 00 00 00 电话会1 00 10 00 00 互联网将是1 00 00 10 00 长途将是1 00 00 00 10

想,如果他们为了多

电视&电话 - 1个10 10 00 00 互联网&长的距离 - 1 00 00 10 10 电视&电话互联网&长的距离 - 1 10 10 10 10

(你可以在每个电视10种不同的组合,互联网,电话&长途) 如果在该领域拥有超过10个项目,你可以增加至3位数字。请记住 - 整型只能容纳10位...

希望这能解决你的问题

+0

我想我明白了,谢谢。那么,如果选择了任何互联网,我将编码该互联网占位符增加?那么使用这个生成的代码链接到引用捆绑定价的主表? – alex 2013-03-22 16:57:48