2012-08-03 123 views
0

我在計算器一個初學者,我希望你讓我對我的問題的解決方案,我將解釋:MySQL的存儲過程和遊標

我有兩個表: 第一個表(表一)包含(電話號碼,持續時間)和 第二個表(表B)包含(internationnal_prefix,目的地,每分鐘費用和長度(前綴))

因此,我需要做的是對所有數據進行此更新在這兩個表中,我將解釋後的算法,首先這是更新條命令: /*我們會在會包含我們的結果表A中增加一列,我們將其命名爲「結果」 */

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

這是我想對每個電話號碼, 我已經下令前綴表B到的表面有最大的前綴做,使得第一檢查是最大的代碼。

此代碼將計算VOIP的完整性,因此我們需要通過驗證電話號碼是否包含國際前綴(例如,我們可以使用每分鐘0.156歐元的0044123)來檢測電話號碼的目的地和0044爲0.08€每分鐘,這就是爲什麼我們必須在驗證的最大碼)

每個電話號碼必須與表B中的所有前綴 所以最後被證實,我需要你給開始我的解決辦法,因爲我沒有足夠的知識,在這一領域...

PS:我使用的是MySQL 5.5 感謝&問候。

回答

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已經由前綴長度命令你可以「按順序」刪除。

+0

感謝您的代碼喬尼,但我得到這個錯誤:錯誤[1093]你不能指定更新目標表「dump_test」 FROM子句 - – 2012-08-03 08:26:58

+0

什麼是您的SQL樣子? – Joni 2012-08-03 08:53:53

+0

我應該告訴你,我沒有表A和表B之間的任何關係,輸入你的問題「我的SQL看起來像什麼?」 ...對不起,但我沒有看到這個... – 2012-08-03 08:58:07