Мне нужно написать запрос соединения двух таблиц из двух баз данных и получить объединенные данные. Например, рассмотрим, что у меня есть база данных db1, в которой есть таблицы, названные компаниями, планами, клиентами. Предположим, мне нужно объединить две таблицы компаний и планы с другой таблицей «cdr» в другой базе данных db2, группируя их с помощью аналогичного столбца.
Запрос, который я запускаю прямо сейчас, приведен ниже:
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; }
Но мой запрос не извлекает данные и не выдает ошибку. Этот же запрос, я работал в одной базе данных и работает. Но мне нужна помощь, чтобы найти, как это можно сделать с двумя базами данных.
Вы можете просто указать следующее, если вам нужно присоединиться к двум таблицам базы данных:
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, просто укажите $ this-> db.