2013-01-04 3 views
5

Je dois écrire une requête de jointure de deux tables à partir de deux bases de données et récupérer les données jointes. Par exemple, considérons que j'ai une base de données db1 qui a des tables nommées sociétés, plans, clients. Supposons que j'ai besoin de joindre les deux tables des sociétés et des plans avec une autre table 'cdr' sur une autre base de données db2 en les regroupant en utilisant une colonne similaire.Requête jointe de deux bases de données dans codeigniter

La requête que je suis en cours d'exécution est donnée ci-dessous en ce moment:

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

Mais ma requête n'est pas les données et aller chercher de lancer une erreur. Cette même requête, j'ai couru sur une seule base de données et fonctionne. Mais j'ai besoin d'aide pour trouver comment cela peut être fait avec deux bases de données.

+0

"Mais ma requête ne récupère pas les données et ne génère pas d'erreur." Quelle erreur lance-t-elle? –

Répondre

4

Vous pouvez juste donner les éléments suivants si vous devez joindre deux tables de base de données:

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

donner ici vous ne devez pas vraiment la DB1 variables connexion ou DB2, donnez $ this-> db.

+0

et si les bases de données sont exécutées sur des machines différentes? –

Questions connexes