|
|
|
|
|
для: confirm
(20.09.2012 в 23:06)
| | Спасибо. | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:56)
| | По примеру выше я не заметил, чтобы ar суммировалось к полю nakop (по результату значений не видно). Но в общем, если вы знаете, что к чему прибавить, то и проблем нет. Единственно, что вы можете не знать, так это на какую величину увеличить. Но вы ведь знаете, что эта величина для всех полей одна и та же, значит два варианта:
а) новая величина (после которой требуется коррекция) это добавление значения N к существующему. Пусть это как и в примере будет 150. Тогда нужно сразу добавлять ее всем полям этой даты:
UPDATE tab SET nakop=nakop+150 WHERE date>$enddate
б) новая величина, это значение N, которым заменили запись М, и опять как в примере, пусть будет для поля первого и равна 250. В этом случае, прежде чем ее заменить на новое значение, нужно получить старое (100), затем получить величину корректировки (250-100=150), и уже затем для всех записей как и ранее.
Как у вас все это происходит, я не знаю, но вам то все известно, значит и карты в руки. | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:56)
| | nakop-накопительные данные,ar- приход ежедневный.Вот и суммируем ,накапливаем эти данные.Иначе никак. | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:51)
| | но только nakop берется за предыдущий день,a ar берется за текущий день суммируются и записывается это значение в поле nakop текущего дня. | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:51)
| | То есть, в данном примере, увеличили значение на 150. Ну и делайте запрос добавляя 150 к значению этих полей. Вот только причем тут ar, я не понял. | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:41)
| | я писала,но Вы не поняли.
ar nakop date
10 100 17/09/2012
20 120 18/09/2012
30 150 19/09/2012
а теперь,допустим,17/09 изменили значение nakop на 250
значит,надо поменять ВСЕ nakop
ar nakop date
10 250 17/09/2012
20 270 18/09/2012
30 300 19/09/2012
т.е. надо к откорректированному nakop прибавлять ar и записать в таблицу в поле nakop и так каждый день | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:41)
| | Если nakop+ar, это и есть формула обновления значений и для всех полей одна и та же, то именно так и надо делать - одним запросом. | |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:34)
| | Попробую сделать тогда вместо всего того,что писала так
$s = mysql_query(" UPDATE tab SET nakop=nakop+ar WHERE date>$enddate ");
|
| |
|
|
|
|
|
|
|
для: morozmoroz
(20.09.2012 в 22:34)
| | Вы можете без $n += чего-то... объяснить по какому принципу должно происходить обновление поля? Возможно ведь, что вам нужен будет всего лишь один единственный запрос на обновление, без всякой выборки предшествующей и тем более запросов в цикле.
Для этого вас и просят - объясните, напишите.
Если же для каждой из записи, новое значение, это нечто уникальное, которое не описывается единой для всех полей формулой, тогда да - выбрали, посчитали, в цикле обновляем. Но обновлять то надо с учетом ID, а не времени. Так как вы предварительный запрос (выборку) уже сделали по этому условию, а обновлять уже надо по конкретному id.
PS. На экран вы выводили, надо полагать $n, вот и казалось, что правильно, а что в это время в базе происходило, осталось за кадром, хотя и так понятно, что не то, что хотелось бы. | |
|
|
|
|
|
|
|
для: confirm
(20.09.2012 в 22:26)
| | Я,НАВЕРНОЕ,не понимаю.Да,так и получилось,что у меня в таблице поменялись все nakop на последнее значение за все дни.НО на экран я выводила-все правильно формируется в переменной $n. | |
|
|
|
|