Как получить значение данных из базы данных с суммой в одном столбце

0

У меня есть функция, которая извлекает значения из базы данных как json.I нужны некоторые данные из базы данных и значение 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);
 } 
  • 0
    Можете ли вы предоставить свой запрос с SUM которая ставит вам проблему? Хотя, похоже, это связано с тем, что вы не используете GROUP BY правильно
  • 0
    @ kchason вышеупомянутый запрос, что один дает проблему. Если я SUM(tb.price) AS total_fare из запроса, я получил все необходимые значения без SUM
Показать ещё 2 комментария
Теги:
database
codeigniter

1 ответ

0

Для получения общей суммы для каждого пассажира необходимо GROUP BY идентификатор пассажира GROUP BY:

 $this->db->group_by('tb.tkt_passenger_id_no');
  • 0
    В зависимости от того, какая версия MySQL OP используется, это вызовет предупреждения / ошибки, поскольку каждое поле должно быть либо в статистической функции, либо в предложении GROUP BY .
  • 0
    Все, что мне нужно, это сумма для всех пассажиров, чтобы дать общую стоимость, например, цена для пассажира 1 - 1000, цена для пассажира 2 - 1500, цена для пассажира 1 - 1000. Мне нужно, чтобы общая сумма составляла 1000, 1500 и 1000 = 3500

Ещё вопросы

Сообщество Overcoder
Наверх
Меню