MySQL存储过程和游标

时间:2012-08-03 07:50:08

标签: mysql cursor

我是stackoverflow的初学者,我希望你能解决我的问题,我会解释一下:

我有两张桌子: 第一个表(表A)包含(电话号码,持续时间)和 第二个表(表B)包含(internationnal_prefix,目的地,每分钟费用和长度(前缀))

所以我需要做的是对这两个表中的所有数据进行更新,之后我会解释算法,首先这是更新命令: / *我们将在表A中添加一个包含我们结果的列,我们将其命名为“result”* /

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

这就是我想要为每个电话号码做 , 我已经通过前缀 命令表B在顶部上有最大的前缀,以便第一个选中的是最大的代码。

此代码将计算VOIP的消费,因此我们需要通过验证电话号码是否包含国际前缀(例如,我们可以拥有0044123,每分钟0.156欧元)来检测电话号码中的目的地。 0044为每分钟0.08€,这就是为什么我们必须从验证中最大的代码开始

必须使用表B中的所有前缀验证每个电话号码 最后,我需要你给我解决方案,因为我在这个领域没有足够的知识......

PS:我正在使用MySQL 5.5 谢谢&问候。

1 个答案:

答案 0 :(得分: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已按前缀长度排序,则可以删除“order by”。