dongzhiyi2006 2017-11-01 03:18
浏览 111
已采纳

如何在一列中获取所有值mysql sum和subtract

I created an API for an accounting application. I have income and spending in one column. How can I sum all the income and spending and subtract?

This my code:

private function list_recap() {

    if($this->get_request_method() != "GET") {
        $this->response('', 406);
    }

    $year  = $this->_request['year'];
    $month = $this->_request['month'];

    $sqlPlus = $this->db->query("SELECT SUM(nominal) 
            FROM lap_keuangan 
                WHERE YEAR(tanggal) = '$year' 
                AND MONTH(tanggal) = '$month' 
           AND kategori = 1");

    $sqlMin  = $this->db->query("SELECT SUM(nominal) 
            FROM lap_keuangan 
                WHERE YEAR(tanggal) = '$year' 
                AND MONTH(tanggal) = '$month' 
                AND kategori = -1");


    $result = array();
    while($rowPlus = $sqlPlus->fetch(PDO::FETCH_ASSOC)) {
        $plus = $result[] = $rowPlus;
    }

    while($rowMin = $sqlMin->fetch(PDO::FETCH_ASSOC)) {
        $minus = $result[] = $rowMin;
    }

    $this->response($this->json($result), 200);
}
  • 写回答

2条回答 默认 最新

  • duandong1963 2017-11-01 04:04
    关注

    You can use CASE-THEN-ELSE construction, try to execute this SQL statement:

    SELECT
        SUM(CASE WHEN kategori = 1 THEN nominal ELSE 0 END) -
        SUM(CASE WHEN kategori = -1 THEN nominal ELSE 0 END)
    FROM lap_keuangan
    WHERE
        YEAR(tanggal) = '$year'
        AND MONTH(tanggal) = '$month'
        AND kategori = 1
    

    PS:

    Your code is vulnerable for SQL Injection attacks. You MUST NOT pass SQL query parameters using strings concatenation. Use PDO instead and bind arguments.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!