2017-08-04 17 views
0

私のデータベースには3つのテーブルがあります。 まず卓上insurance_policy、第二ワンinsurance_customer &第三ワンinsurance_paymentsCodeigniter複数のテーブルと合計を結合する

は、私は特定の日付範囲でポリシーテーブルからデータを取得しようとしている、同じ時間は、&最後に取得しようとして顧客テーブルから顧客情報をプルしようとしていますそのポリシーの支払い情報。ここで

は、私が代わりにすべてのレコードを返すので、支払テーブルから金額列の合計を取得しようとしているコードので、遠

$this->db->select('*'); 
$this->db->from('insurance_policy'); 
$this->db->join('insurance_customer', 'insurance_customer.customer_id = insurance_policy.Customer_ID', 'left'); 
$this->db->join('insurance_payments', 'insurance_payments.Policy_Number = insurance_policy.Policy_ID', 'left'); 
$this->db->where('insurance_policy.Payment_Date >=', $from); 
$this->db->where('insurance_policy.Payment_Date <=', $to); 

$query = $this->db->get(); 
return $query->result_array(); 

です。支払いデータは同じポリシーIDを持つ複数のものになる可能性があるので、私は以下の結果のような支払いデータの複数の結果を得ます。代わりに、ポリシーIDごとに1つの結果(そのポリシーIDの複数の支払いのため重複しない)を取得しようとしています&そのポリシーの支払いテーブルからの金額の合計。

ありがとうございました。

Array 
(
[0] => Array 
    (
     [Policy_ID] => 26 
     [Policy] => 1234 
     [Customer_ID] => 30 
     [Effective_Date] => 06/08/2016 
     [Expiration_Date] => 06/08/2017 
     [Insurer] => Lorem 
     [Billing] => Lorem 
     [Agent] => Lorem 
     [Notes] => Lorem 
     [Mail_Date] => 
     [Callback_Date] => 
     [Contact_Date] => 
     [Type] => Lorem 
     [Policy_Total] => 140 
     [Commission_Amount] => 0 
     [Brokerage_Fee] => 0 
     [Insurance_Price] => 140 
     [Payment_Date] => 06/08/2016 
     [Cancellation_Date] => 
     [Paid_in_Full] => 0 
     [customer_id] => 30 
     [First_Name] => Lorem 
     [Last_Name] => Lorem 
     [Company_Name] => Lorem 
     [Company_Type] => Lorem 
     [EIN_Number] => 
     [Fee_License] => 1234 
     [Address] => Lorem 
     [City] => Lorem 
     [State] => CA 
     [Zipcode] => 12345 
     [Phone] => 123-456-7890 
     [Alt_Number] => 
     [Fax_Number] => 
     [Email] => [email protected] 
     [id] => 8 
     [Policy_Number] => 26 
     [Date] => 08/16/2017 
     [Amount] => 400 
     [status] => 1 
    ) 

[1] => Array 
    (
     [Policy_ID] => 26 
     [Policy] => 1234 
     [Customer_ID] => 30 
     [Effective_Date] => 06/08/2016 
     [Expiration_Date] => 06/08/2017 
     [Insurer] => Lorem 
     [Billing] => Lorem 
     [Agent] => Lorem 
     [Notes] => 
     [Mail_Date] => 
     [Callback_Date] => 
     [Contact_Date] => 
     [Type] => Lorem 
     [Policy_Total] => 140 
     [Commission_Amount] => 0 
     [Brokerage_Fee] => 0 
     [Insurance_Price] => 140 
     [Payment_Date] => 06/08/2016 
     [Cancellation_Date] => 
     [Paid_in_Full] => 0 
     [customer_id] => 30 
     [First_Name] => Art 
     [Last_Name] => Lorem 
     [Company_Name] => Lorem 
     [Company_Type] => Lorem 
     [EIN_Number] => 
     [Fee_License] => 55555 
     [Address] => Lorem 
     [City] => Lorem 
     [State] => CA 
     [Zipcode] => 12345 
     [Phone] => 333-444-5555 
     [Alt_Number] => 
     [Fax_Number] => 
     [Email] => [email protected] 
     [id] => 4 
     [Policy_Number] => 26 
     [Date] => 08/15/2017 
     [Amount] => 200.10 
     [status] => 1 
    ) 
) 

答えて

0

たぶん

$this->db->select('SUM(insurance_policy.Policy_Total)');//changed 
$this->db->from('insurance_policy'); 
$this->db->join('insurance_customer', 'insurance_customer.customer_id = 
insurance_policy.Customer_ID', 'left'); 
$this->db->join('insurance_payments', 'insurance_payments.Policy_Number = insurance_policy.Policy_ID', 'left'); 
$this->db->where('insurance_policy.Payment_Date >=', $from); 
$this->db->where('insurance_policy.Payment_Date <=', $to); 
$this->db->group_by("Policy_ID");//added 

$query = $this->db->get(); 
return $query->result_array(); 
関連する問題