【发布时间】: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