2013-03-21 83 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