데이터베이스에 저장된 값들을 각각 합산하여 표시하는 방법에 대해 질문드립니다.

데이터베이스에 저장된 값들을 각각 합산하여 표시하는 방법에 대해 질문드립니다.

QA

데이터베이스에 저장된 값들을 각각 합산하여 표시하는 방법에 대해 질문드립니다.

답변 2

본문

현재 데이터테이블에 입금액 / 출금액 두가지가 있는데, 해당두 건을 계산해서 잔액을 표시하고 싶은 상태입니다.

 

하단의 데이터를 참고하면,

2042089677_1682413621.4188.png

 

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

입니다.

 

참고할만한 소스코드가 있을지 질문드려 봅니다.

 


$sql1 = "SELECT sum(insert1) FROM addForm";
                $result = $db->query($sql1);
                $add= $result->fetch_array(MYSQLI_ASSOC);
                echo ' 입금액 합계 : ' . $add['sum(insert1)'];

합계를 구하는건 이런식으로 하는건 알고 있는데, 질문드린것처럼 하는 방식이 참 어렵네요..ㅠ

이 질문에 댓글 쓰기 :

답변 2

금액의 입/출이 발생할때
발생시점별로 입금+, 출금-를 하고 잔액을 해당시점에 같이 기록해주어야 계산로직을 돌리지 않을수있습니다.

컬럼이 3개라고 하신것처럼 insert1, insert2, sum 에 각각 기록을 해주어야죠

 

참고로  컬럼명이 sum/add 등과 같은 예약어또는 함수명과 같거나 유사하면 다르게 지정하는게 좋습니다.오작동되거나 오해를 수반하기때문에 최초코딩한 사람도 나중에 본인의 코드도 이해를 못하게됩니다.

 

위의 내용처럼 컬럼이 존재할때는

발생일자를 반드시 기록해두어야 합니다.

시분초, 혹은 그보다 더 정밀할수록 좋습니다.

 

입금액 합계를 sum(insert1)으로 하면 잔액은 최종잔액만 나옵니다.

최악의 결괄르 도출할수있습니다.

 

$sql = "select insert1, insert2 from addForm order by idx ";

// idx는 기본키가 있다는가정하에 명시한것이고, 그게 아니라면 reg_date같은 기록일시를 사용하는게 좋습니다.

그리고, 누구의 금액정보인지를 알아야 기록을 하겠죠

임의로 컬럼에 user_id컬럼과 $사용자ID가 있다고 가정하고 

다시 코드를 구성해보면


    //$sql1 = "SELECT sum(insert1) FROM addForm";
 
    $sql1 = "select insert1, insert2 from addForm where user_id = '{$사용자ID}' order by reg_date";
    $balance = 0;
    $result = $db->query($sql1);
    while ($add= $result->fetch_array(MYSQLI_ASSOC)) {
         $balance += $add['insert1'] - $add['insert2'];
                echo '입금 : '.$add['insert1']." , ";
                echo '출금 : '.$add['insert2']." , ";
                echo ' 입금액 합계 : ' . $balance."<br>"; 
    }

 

일단은 전체값을 가져와서 이런식으로 구성하면 되지 않을까 생각됩니다.

이거 함수가 객체기반이네요? 그누보드 내장 함수 아닌가봐요?

일단 쿼리로 해결 하기보다는 페츠 배열로 받아와서 += 으로 해서 합산하면되지 않을까요?

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 124,035
© SIRSOFT
현재 페이지 제일 처음으로