Mysql,当变量依赖于其他选择时计算sum()

时间:2013-03-21 14:25:46

标签: mysql variables sumifs

你好,Stackoverflow的好人!我一直在用以下挑战绞尽脑汁。

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

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

定价矩阵 -

    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 

正如您所看到的,我没有将产品ID分配给捆绑包,b / c我尝试为捆绑包创建单独的产品ID,甚至考虑使用php以编程方式根据一组规则分配产品ID产品被选中,但是我失去了最终计算/查询包含/销售的单个产品的能力。

我是否过度思考这个?是否可以只使用SQL或至少限制PHP方面?

下表显示了该电视产品的计算价格,该价格基于其所属的捆绑和排名。我创建了这个,因为我正在考虑使用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 

这个问题变得越来越荒谬所以我会停在那里,但请这是否有意义,有没有人有任何建议?非常感谢你!

1 个答案:

答案 0 :(得分:1)

考虑9位数的产品ID ... 我将按如下方式分配产品

当他们购买电视时,它可以 按如下方式隔离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位......

希望这能解决您的问题