Есть две таблицы 'orders' (id, bank_name, order_amount) и 'balances' (bank_name, total_balance). С помощью формы данные добавляются в таблицу 'orders' и в тоже время обновляется значение total_balance в 'balances' в зависимости от bank_name.
Существует также форма для того чтобы изменять какое-то значение в таблице 'orders'. Все это прекрасно работает.
Если при помощи второй формы изменять значение order_amount в таблице 'orders', то значение total_balance в таблице 'balances' также должно меняться. Для этого я хочу сделать следующее:
При изменении order_amount в таблице 'orders', с помощью SUM() должно подсчитываться общая сумма всех order_amount в зависимости от bank_name и обновляться знание total_balance в таблице 'balances'.
То есть, изменяем стоку в таблице 'orders', суммируем order_amount и обновляем значение total_balance в 'balances':
$result1 = $mysqli->query("UPDATE ".$orders." SET `bank_name` = '$bank_name', `order_amount` = '$order_amount' where id = '$id'");
$result2 = $mysqli->query("UPDATE ".$balance." SET `total_balance` = (SELECT SUM(order_amount) AS order_amount FROM ".$orders." GROUP by bank_name) WHERE bank_name = '$bank_name'");
$result1
работает, но $result2
к сожалению нет.. В чем может быть ошибка?
Ну, не работает, потому что
SELECT SUM(order_amount) AS order_amount FROM ".$orders." GROUP by bank_name
выбирект несколько строк, а вам нужна одна. Нужно как минимум добавить
WHERE bank_name = '$bank_name'
к селекту.
А все записи можно обновить так -
UPDATE `".$balance."` as `b`
JOIN (SELECT SUM(`order_amount`) AS `order_amount`, `bank_name` FROM `".$orders."` GROUP by `bank_name`) as `o` ON `b`.`bank_name` = `o`.`bank_name`
SET `b`.`total_balance` = `o`.`order_amount`;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
при миграции базы постоянно выдает вот такую ошибку, не понимаю что нужно исправить