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

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

QA

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

본문

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

 

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

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>"; 
    }

 

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 954
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT