【问题标题】:How to retrieve value of data from database with SUM in one column如何在一列中使用 SUM 从数据库中检索数据的值
【发布时间】:2019-03-02 02:24:13
【问题描述】:

我有一个函数可以从数据库中以 json 形式检索值。我需要一些数据库中的数据和某个列的 SUM 值。当我没有从这些值中检索 SUM 时,我会得到所有需要的数据,但是当我还包含 SUM 函数时要从某个列获取值的总和,我只得到单个值对象

型号

    public function search_tickets($data){
    $ticketDate = $data['ticket_date'];
    $ticketBus = $data['ticket_bus'];
    $ticketAgentId = $data['agent_id'];
        $user = $this->db->select("
        CONCAT_WS(' ', tp.firstname, tp.lastname) AS passenger_name,
        tb.seat_numbers AS seat_number,
        tb.id_no AS ticket_number,
        fr.reg_no AS bus_number,
        DATE_FORMAT(ta.start_date, '%d/%m/%Y') as ticket_date,
        tb.price AS fare_paid,
                tb.pickup_trip_location AS boarding,
                tb.drop_trip_location AS dropping,
                    SUM(tb.price) AS total_fare
            ")
        ->from('tkt_booking AS tb')
        ->join('tkt_passenger AS tp', 'tb.tkt_passenger_id_no = tp.id_no' ,'full')
        ->join('trip_assign AS ta', 'ta.id = tb.trip_id_no' ,'full')
        ->join('trip_route AS tr', 'tr.id = tb.trip_route_id','full')
        ->join('agent AS a', 'a.agent_id = tb.agent_id','full')
        ->join('fleet_registration AS fr', 'fr.id = ta.fleet_registration_id','full')
        ->where('ta.start_date', $ticketDate )
        ->where('fr.reg_no', $ticketBus )
        ->where('tb.agent_id', $ticketAgentId )
        ->get()
        ->result();
    return $user;
}

控制器

    public function searchTickets(){ 
                $data = $_POST; 
        $ticket=$this->booking_model->search_tickets($data);
        if($ticket){
            $result =  array('tickets'=>$ticket);
        } else {
            $result =  NULL;
        }
        print json_encode($result);
 } 

【问题讨论】:

  • 您能否提供问题所在的SUM 查询?虽然听起来这与你没有正确使用GROUP BY有关
  • @kchason 上面的查询是一个问题。如果我从查询中删除 SUM(tb.price) AS total_fare 我得到所有需要的值而没有 SUM
  • 哦,我错过了,对不起。那么 total_fare 应该是什么?所有票的总票价,还是每个部分(代理、客户等)的总票价?你有tb.price AS fare_paid,然后是SUM(tb.price) AS total_fare。但不管怎样,看看dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html
  • @kchason 我需要的是所有乘客的总和,例如乘客 1 的 fare_paid 是 1000,乘客 2 的 fare_paid 是 1500,乘客 1 的 fare_paid 是 1000 .我需要一个 totaltotal_fare 值是 1000,1500 和 1000 = 3500 的总和

标签: mysql json database codeigniter


【解决方案1】:

您应该GROUP BY 乘客 id 以获得每位乘客的总和:

 $this->db->group_by('tb.tkt_passenger_id_no');

【讨论】:

  • 根据使用的 MySQL OP 版本,这将导致警告/错误,因为每个字段都应位于聚合函数中或 GROUP BY 子句中。
  • 我需要的是所有乘客的总和以给出总价值,例如乘客 1 的价格是 1000,乘客 2 的价格是 1500,乘客 1 的价格是 1000。我需要一个总价值1000,1500 和 1000 之和 = 3500
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2019-05-30
  • 2020-08-03
  • 1970-01-01
相关资源
最近更新 更多