php - query - mostrar datos de una base de datos con codeigniter
Únase a la consulta de dos bases de datos en codeigniter (1)
Necesito escribir una consulta de combinación de dos tablas de dos bases de datos y buscar los datos unidos. Por ejemplo, considere que tengo una base de datos db1 que tiene algunas tablas llamadas compañías, planes, clientes. Supongamos que necesito unirme a las dos compañías de tablas y los planes con otra tabla ''cdr'' en otra base de datos db2, agrupándolos usando una columna similar.
La consulta que estoy ejecutando ahora se da a continuación:
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;
}
Pero mi consulta no está obteniendo los datos y arrojando un error. Esta misma consulta, la he ejecutado en una sola base de datos y está funcionando. Pero necesito ayuda para encontrar cómo se puede hacer esto con dos bases de datos.
Puede dar lo siguiente si necesita unir dos tablas de base de datos:
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;
}
Aquí en realidad no necesita dar la variable de conexión DB1 o DB2, simplemente proporcione $ this-> db.