Задать вопрос
@Teraxis

Пакетная выборка и обновление записей в таблице MySQL с промежуточными расчетами отдельных значений

Приветствую сообщество Тостера!
Пробую прописать определенную функцию. Нужно реализовать выборку записей из таблицы, подтянуть значение со связанной таблицы, на основании подтянутых данных произвести расчеты и вернуть результат в эту же таблицу. Это все должно работать пакетно, тоесть выборка и обработка всех данных в таблице. Естественно подсчеты для каждой записи будут индивидуальные.

$sql = "SELECT DISTINCT t.id AS id, t.copper_id, t.plastic_id, t.copper_gost, t.plastic_gost, t.outlay, c.id, c.copper_price, p.id, p.plastic_price
			FROM servtypes AS t
			LEFT JOIN material_copper AS c ON c.id = t.copper_id
			LEFT JOIN material_plastic AS p ON p.id = t.plastic_id";
$data = $this->db->query($sql);
	
foreach($data as $rec){
		$sql = "SELECT DISTINCT t.id AS id, t.copper_id, t.plastic_id, t.copper_gost, t.plastic_gost, t.outlay, c.id, c.copper_price, p.id, p.plastic_price
			FROM servtypes AS t
			LEFT JOIN material_copper AS c ON c.id = t.copper_id
			LEFT JOIN material_plastic AS p ON p.id = t.plastic_id";
		$data = $this->db->scalar($sql);
		
		$cost = ((($rec[0]['copper_price']*$rec[0]['copper_gost'])/1000)+(($rec[0]['plastic_price']*$rec[0]['plastic_gost'])/1000)+$rec[0]['outlay']);
		$cash_gost = round($cost*1.11, 2); 
		$wholesale_gost = round($cash_gost*1.06, 2); 
		$retail_gost = round($wholesale_gost*1.3, 2); 
		
		$this->db->query("UPDATE servtypes SET cash = '$cash_gost', retail = '$retail_gost', wholesale = '$wholesale_gost'");
		
		}


При запуске не происходит индивидуальный подсчет и запись в базу. Пробовал дописать для UPDATE WHERE id = $rec но выводит ошибку

UPDATE servtypes SET cash = '0', retail = '0', wholesale = '0' WHERE id = Array


Подскажите пожалуйста, в чем ошибка.
  • Вопрос задан
  • 3746 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Teraxis Автор вопроса
При запуске не происходит индивидуальный подсчет и запись в базу. Пробовал дописать для UPDATE WHERE id = $rec но выводит ошибку

UPDATE servtypes SET cash = '0', retail = '0', wholesale = '0' WHERE id = Array
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы