2014-12-11 2 views
0

В сценарии телефонной системы у меня есть 2 таблицы.Строки MYSQL UPDATE, соответствующие условию на основе переменных

  • таблица1 состоит из: customer_id, call_duration, calldate, skip_billing.
  • таблица2 составлена: customer_id, bonus_seconds.

В таблице 1 хранятся все призывы для всех клиентов, а таблица2 хранит бонусные_секунды, которые представляют свободное время разговора для определенного клиента (то есть: для клиента 1 ПЕРВЫЕ 40 кумулятивных секунд бесплатны).

Мне нужно написать запрос для обновления таблицы1 в соответствии с приведенным ниже условием: установить skip_billing в пределах вызовов, которые определены бесплатно в таблице2.

Так что сначала мне нужно сгруппировать по customer_id, а затем перебрать вызовы, увеличив кумулятивную переменную (cumsec) над call_duration и соответственно установить skip_billing.

table1 пример:

|customer_id |billsec | skipbill| 
|1   |12  | 0  | 
|1   |10  | 0  | 
|1   |15  | 0  | 
|1   |8  | 0  | <--need to set 1 due to cumsec=45 for customer_id=1 
|2   |12  | 0  | <--nop 
|3   |12  | 0  | <--nop 
|2   |12  | 0  | <--need to set 1 due to cumsec=24 for customer_id=2 
|1   |12  | 0  | <--need to set 1 .... 
|3   |15  | 0  | <--need to set 1 due to cumsec=27 for customer_id=3 

|customer_id |bonus_seconds| 
|1   |40   | 
|2   |20   | 
|3   |15   | 

Как я могу написать запрос или процедуру в SQL для достижения такого поведения? Спасибо большое

+0

Пожалуйста, скопируйте/вывесить ошибку вы получили в свой вопрос –

ответ

0

Предполагая, что таблица имеет первичный ключ = идентификатор, вы можете попробовать:

SET SQL_SAFE_UPDATES=0; 
update table table1 
join (select id, sum(billsec) s from table 
      group by id having sum(billsec) < 1000) t1 
on (t1.id = table1.id) 
set table1.skipbill = 1 
+0

, к сожалению, я не могу, как предполагается, идентификатор первичного ключа. , когда вы группируете по id, как вы можете достичь суммы? спасибо в любом случае –

+0

Что является основным ключом таблицы или уникальным ключом –

+0

нет на данный момент –

Смежные вопросы