0

私はstackoverflowの初心者です。問題の解決策を教えていただければ幸いです。説明します:

私は2つのテーブルを持っています:最初のテーブル(テーブルA)には(電話番号、期間)が含まれ、2番目のテーブル(テーブルB)には(international_prefix、宛先、分あたりの料金、および長さ(プレフィックス))が含まれます

したがって、私がする必要があるのは、2 つのテーブルのすべてのデータに対してこの更新を行うことです。後でアルゴリズムを説明します。まず、更新コマンドです: /* テーブル A に列を追加します。結果を含み、「結果」と名付けます */

 UPDATE table Table A SET result  = CASE WHEN left (phone_number,length(prefix)) = prefix_inter 
  THEN  (duration * fee per minute)

これは私がすべての電話番号に対してやりたいことです。最初にチェックされたコードが最大のコードになるように、テーブル B をプレフィックスで注文 して、一番上に最大のプレフィックスを配置しました。

このコードは VOIP のコンソメーションを計算するため、電話番号に正確に国際プレフィックスが含まれているかどうかを確認して、電話番号から宛先を検出する必要があります (たとえば、1 分あたり 0.156 ユーロの 0044123 と 0.08 の 0044 を持つことができます)。 €/分、これが検証で最大のコードから始めなければならない理由です)

すべての電話番号は、表 B のすべてのプレフィックスで検証する 必要があります。最後に、このドメインに関する十分な知識がないため、解決策を教えてください...

PS:MySQL 5.5 を使用しています

4

1 に答える 1

1

では、これら 2 つのテーブルを使用して通話料金を計算しますか? これを行う 1 つの方法は、サブセレクトで 1 分あたりの料金を調べることです。

UPDATE A SET result = (select A.duration*B.fee_per_minute from B where
    locate(B.prefix, A.phone_number) = 1 order by length(prefix) desc limit 1);

B がすでにプレフィックス長で並べ替えられている場合は、「並べ替え」を削除できます。

于 2012-08-03T08:02:25.233 に答える