2013-01-04 36 views
5

我需要編寫來自兩個數據庫的兩個表的連接查詢並獲取連接的數據。 例如,考慮我有一個數據庫db1,其中有一些表格命名爲公司,計劃,客戶。假設我需要通過使用類似的列對另一個數據庫db2上的另一個表「cdr」進行分組,將兩個表公司和計劃結合在一起。在codeigniter中加入兩個數據庫的查詢

這我現在正在運行的查詢如下:

function get_per_company_total_use ($custid) 
     {   
       $this->DB1->select('ph_Companies.CompanyName'); 
       $this->DB1->where('ph_Companies.Cust_ID', $custid); 
       $this->DB2->select_sum('cdr.call_length_billable')->from('cdr'); 
       $this->DB2->group_by('cdr.CompanyName'); 
       $this->db->join('Kalix2.ph_Companies', 'Kalix2.ph_Companies.CompanyName = Asterisk.cdr.CompanyName'); 
       $query = $this->db->get(); 
       if($query->result()){ 
        foreach ($query->result() as $value) { 
         $companies[]= array($value->CompanyName,$value->call_length_billable); 
          } 
        return $companies; 
       } 
       else 
        return FALSE; 
     } 

但我的查詢不獲取數據,並拋出一個錯誤。同樣的查詢,我運行在單個數據庫上並正在運行。但我需要幫助來找出如何用兩個數據庫完成這項工作。

+0

」但我的查詢沒有獲取數據並拋出錯誤。「它拋出了什麼錯誤? –

回答

4

,您可以把下面的,如果你需要連接兩個數據庫表:

function get_per_company_total_use ($custid) 
     {   
       $this->db->select('Kalix2.ph_Companies.CompanyName'); 
       $this->db->where('Kalix2.ph_Companies.Cust_ID', $custid); 
       $this->db->select_sum('Asterisk.cdr.call_length_billable')->from('Asterisk.cdr'); 
       $this->db->group_by('Asterisk.cdr.CompanyName'); 
       $this->db->join('Kalix2.ph_Companies', 'Kalix2.ph_Companies.CompanyName = Asterisk.cdr.CompanyName'); 
       $query = $this->db->get(); 
       if($query->result()){ 
        foreach ($query->result() as $value) { 
         $companies[]= array($value->CompanyName,$value->call_length_billable); 
          } 
        return $companies; 
       } 
       else 
        return FALSE; 
     } 

這裏其實你不必爲連接變量DB1或DB2,只給$這個 - >分貝。 「

+0

如果數據庫在不同的機器上運行,該怎麼辦? –