2013-01-04 10 views
5

2つのデータベースから2つのテーブルの結合クエリを作成し、結合したデータをフェッチする必要があります。 たとえば、会社、プラン、顧客という名前のテーブルを持つデータベースdb1があるとします。私が2つのテーブルの会社と計画を結合する必要があると仮定して、別のデータベースdb2上の別のテーブル 'cdr'を使用して同様の列を使用してそれらをグループ化します。codeigniterで2つのデータベースのクエリを結合する

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; 
     } 

しかし、私のクエリは、データをフェッチし、エラーを投げていない:私は今実行しているよ

クエリは以下の通りです。この同じクエリは、私は単一のデータベース上で実行され、動作しています。しかし、私はこれを2つのデータベースでどのように行うことができるかを見つけるために助けが必要です。

+0

"しかし、私のクエリはデータを取り出してエラーを投げていません。"どのようなエラーがそれを投げているのですか? –

答えて

4

あなたは2つのデータベースのテーブルに参加する必要がある場合には、単に次のように与えることができます:ここでは

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; 
     } 

を実際にあなただけの$ this - を与え、接続に変数DB1またはDB2を与える必要はありません>デシベル。

+0

データベースが異なるマシンで実行される場合はどうなりますか? –

関連する問題