0

親愛なるすべての友人私は Codeigniter フレームワークの初心者で、2 つのテーブル データを選択して合計金額が必要です。問題は、2 番目のテーブルにデータを入力すると合計が 2 倍になることです。

function total_amount($booking_no = NULL)
{
    $data  = array('forwarding_cargo_booking_details.*',
                   'other_charges.client_amount');


    $this->db->select($data);
    $this->db->where('forwarding_cargo_booking_details.booking_no',$booking_no);
    $this->db->join('other_charges','forwarding_cargo_booking_details.booking_no = other_charges.booking_no','left');
    $this->db->select('sum((`bk_m3`*`o_freight_client`)*(`selling_rate`)+`pod_client`+`thc_client`+`caf_client`+`baf_client`+`haulage_client`+`war_risk_client`+`warehouse_client`+`thc_dest_client`+`pp_surcharge_client`+`doc_charges_client`+`client_amount`) as salam', FAlSE);
    $query = $this->db->get('forwarding_cargo_booking_details');            
    if($query->num_rows() > 0)
    {
        return $query->row();
    }
}
4

2 に答える 2

1

これに変更します。ここでは、派生クエリを使用して、正常に機能するかどうかをテストします

function total_amount($booking_no = NULL)
{
    $sql_query  =   "SELECT
                        forwarding_cargo_booking_details.*,
                        other_charges.client_amount,
                        sum((`bk_m3`*`o_freight_client`)*(`selling_rate`)+`pod_client`+`thc_client`+`caf_client`+`baf_client`+`haulage_client`+`war_risk_client`+`warehouse_client`+`thc_dest_client`+`pp_surcharge_client`+`doc_charges_client`+`client_amount`) as amount
                    FROM forwarding_cargo_booking_details 
                    LEFT JOIN (SELECT booking_no , sum(client_amount) FROM other_charges group by booking_no) as other_charges ON forwarding_cargo_booking_details.booking_no = other_charges.booking_no
                    ";
    $query = $this->db->query();   

    if($query->num_rows() > 0)
    {
        return $query->row();
    }
}
于 2012-10-09T06:21:35.887 に答える
0

このコードを使用してクエリを印刷し、クエリを確認します。

$this->db->last_query();

クエリで「Group By」を使用するのを忘れていると思います

于 2012-10-08T07:07:54.673 に答える