데이터베이스에 저장된 값들을 각각 합산하여 표시하는 방법에 대해 질문드립니다. 채택완료
현재 데이터테이블에 입금액 / 출금액 두가지가 있는데, 해당두 건을 계산해서 잔액을 표시하고 싶은 상태입니다.
하단의 데이터를 참고하면,

4번째 100000원 입금 / 0원 출금 인 경우 4번째 잔액부분에 100000원을 표현하고
3번째 0원 입금 / 10000원 출금 인 경우, 3번째 잔액부분에 4번째의 잔액과 계산하여 90000원을 표시하고,
2번째 0원 입금 / 25000원 출금 인 경우, 2번째 잔액부분에 3번째의 잔액과 계산하여 65000원을 표시하고,
1번째 50000원 입금 / 0원 출금 인 경우, 1번째 잔액부분에 3번째의 잔액과 계산하여 115000원을 표시하는 형태를 진행하고 싶은데, 어떤방식으로 해야할지 의문이네요 ㅠㅠ
데이터베이스 컬럼명은 입금액 : insert1 / 출금액 : insert2 / 잔액 : sum
입니다.
참고할만한 소스코드가 있을지 질문드려 봅니다.
</p>
<p>$sql1 = "SELECT sum(insert1) FROM addForm";
$result = $db->query($sql1);
$add= $result->fetch_array(MYSQLI_ASSOC);
echo ' 입금액 합계 : ' . $add['sum(insert1)'];</p>
<p>
합계를 구하는건 이런식으로 하는건 알고 있는데, 질문드린것처럼 하는 방식이 참 어렵네요..ㅠ
답변 2개
금액의 입/출이 발생할때
발생시점별로 입금+, 출금-를 하고 잔액을 해당시점에 같이 기록해주어야 계산로직을 돌리지 않을수있습니다.
컬럼이 3개라고 하신것처럼 insert1, insert2, sum 에 각각 기록을 해주어야죠
참고로 컬럼명이 sum/add 등과 같은 예약어또는 함수명과 같거나 유사하면 다르게 지정하는게 좋습니다.오작동되거나 오해를 수반하기때문에 최초코딩한 사람도 나중에 본인의 코드도 이해를 못하게됩니다.
위의 내용처럼 컬럼이 존재할때는
발생일자를 반드시 기록해두어야 합니다.
시분초, 혹은 그보다 더 정밀할수록 좋습니다.
입금액 합계를 sum(insert1)으로 하면 잔액은 최종잔액만 나옵니다.
최악의 결괄르 도출할수있습니다.
$sql = "select insert1, insert2 from addForm order by idx ";
// idx는 기본키가 있다는가정하에 명시한것이고, 그게 아니라면 reg_date같은 기록일시를 사용하는게 좋습니다.
그리고, 누구의 금액정보인지를 알아야 기록을 하겠죠
임의로 컬럼에 user_id컬럼과 $사용자ID가 있다고 가정하고
다시 코드를 구성해보면
</p>
<p> //$sql1 = "SELECT sum(insert1) FROM addForm";</p>
<p> </p>
<p> $sql1 = "select insert1, insert2 from addForm where user_id = '{$사용자ID}' order by reg_date";</p>
<p> $balance = 0;</p>
<p> $result = $db->query($sql1);</p>
<p> while ($add= $result->fetch_array(MYSQLI_ASSOC)) {</p>
<p> $balance += $add['insert1'] - $add['insert2'];</p>
<p> echo '입금 : '.$add['insert1']." , ";</p>
<p> echo '출금 : '.$add['insert2']." , ";</p>
<p> echo ' 입금액 합계 : ' . $balance."
"; </p>
<p> }</p>
<p>
일단은 전체값을 가져와서 이런식으로 구성하면 되지 않을까 생각됩니다.
답변에 대한 댓글 5개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인