Вот и первый вопрос.
Есть таблица "itogi"
id | sch_id | period | ob_d | ob_k | ost | Должно быть в поле "ost" |
1 | 4 | 2012-01-01 | 200 | 200 | 200 | |
3 | 26 | 2012-01-01 | 200 | -200 | -200 | |
4 | 4 | 2012-02-01 | 50 | 50 | 250 | |
5 | 26 | 2012-02-01 | 50 | -50 | -250 | |
6 | 4 | 2012-03-01 | 50 | 50 | 300 | |
7 | 26 | 2012-03-01 | 50 | -50 | -300 |
Нужно в триггере на обновление обновить (рассчитать) поле "ost"
Поле "ost" рассчитывается по такой формуле:
"ost" на начало (предыдущий период) + "ob_d" (текущий период) - "ob_k" (текущий период) и записать результат в "ost" (текущий период)
update itogi set
ost = ifnull((SELECT ost FROM itogi WHERE date(period) = date('2012-01-01','-1 month') AND sch_id = 4),0) + ifnull(ob_d,0) - ifnull(ob_k,0)
where sch_id = 4 and date(period) >= date('2012-01-01');
------------ Дoбавленo в 21.13:
Наверное такое сделать на стороне базы невозможно. Э-эх...
------------ Дoбавленo в 23.08:
Или вообще не сохранять в базе вычисляемые данные?