как получить сумму на каждом цикле на столе

0

У меня проблема с разбивкой суммы данного платежа, я думаю, что что-то упустил в моем коде. Это моя таблица ниже.

Если у меня есть платеж 5000, он вычитается в первом ряду, а оставшаяся сумма отправляется во второй ряд.

//это платеж

$payment = 5000;
$temp = '';

//цикл функции

$data = payment_breakdown();
foreach ($data as $row) {

    $amount = $row['AMOUNT'] - $payment."\n";
}

//обрабатываем разницу в каждом цикле функции

$temp = $amount;

//результат суммы

echo $amount;

//это моя функция для получения данных из таблицы

function payment_breakdown(){
    $db = database2();
    $query = "SELECT AMOUNT FROM TABLE1";
    $cmd = $db->prepare($query);    
    $cmd->execute();
    $rows = $cmd->fetchAll();
    $db = null;

    return $rows;
}

предположительно, если сумма на столе это

Data From Table | The Payment
        3000    |     3000
        3000    |     2000
  • 1
    Хм, можете ли вы уточнить, в чем вопрос? The Payment столбце The Payment указаны неверные данные?
  • 0
    Вы можете иметь в виду $temp += $amount;
Показать ещё 5 комментариев
Теги:

1 ответ

1

Вы можете сделать это в SQL:

SELECT 
  amount, 
  paid,
  sum(amount-paid) open
FROM
  payment 
GROUP BY amount, paid 
WITH ROLLUP
HAVING 
  amount IS NULL
  OR paid IS NOT NULL
;

На основании данных

INSERT INTO payment (amount, paid)
VALUES 
(3000,3000), 
(3000,2000),
(4000,1000)
;

ты получаешь

amount;paid; open
3000  ;2000; 1000
3000  ;3000; 0
4000  ;1000; 3000
NULL  ;NULL; 4000

Или вы можете захотеть простое вычитание из депозита:

SET @credit := 5000;

SELECT 
  amount, 
  @credit := @credit-amount credit  
FROM payment 
;

SELECT @credit;

Тем не менее, в последнем случае вы должны хранить все платежи и суммы для внесения в таблицы базы данных и суммировать все вместе. Рассмотрите возможность рефакторинга вашей структуры базы данных.

  • 0
    Я на самом деле использовал PHP

Ещё вопросы

Сообщество Overcoder
Наверх
Меню