0

こんにちは Stackoverflow の偉大な人々! 私は次の課題で頭を悩ませてきました。

特定の販売で販売された製品の合計を計算するクエリがありますが、これは簡単です。私を夢中にさせている課題の 2 番目の部分は次のとおりです。

個々の製品の合計が最終価格と等しくないことを意味する「バンドル」で構成される販売がいくつかあります。販売がバンドルになるためには、「TV」製品が必要です。TV 製品は、それ自体を販売することができ、関連する価格がありますが、バンドルの一部である場合、価格は変動します。これが私がこれまでに持っているものです:

価格表 -

    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 を作成しようとしましたが、個々の製品が選択されている場合、一連のルールに基づいてプログラムで製品 ID を割り当てるために php を使用することも考えました。 、しかし、そのバンドル/セールを構成する個々の製品を最終的にカウント/クエリする能力を失います.

私はこれを考えすぎていますか?SQLを利用するか、少なくともPHP側を制限することは可能ですか?

以下は、その 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 

この質問はとてつもなく長くなるので、ここでやめますが、これは理にかなっていますか、誰か提案はありますか? どうもありがとう!

4

1 に答える 1

1

9桁の製品IDを考えてみましょう...次のように製品を割り当てます

彼らがテレビを購入するとき、次のように9桁を分離することができます

最初の桁を 1 にする (他の桁をゼロにするためだけに) TV の場合は 2 番目と 3 番目の桁 電話の場合は 4 番目と 5 番目の桁 インターネットの場合は 6 番目と 7 番目の桁 8 番目と 9 番目の桁は長距離用です...

例えば:

個々の項目の値 TV は 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桁しか保持できません...

これで問題が解決することを願っています

于 2013-03-21T16:40:43.343 に答える