Конвертировать запрос в моем SQL для Codeigniter в двух базах данных - PullRequest
0 голосов
/ 01 сентября 2018

Мне действительно нужна помощь. Я должен объединить две базы данных, и я попытался в моем запросе и реализован в моей локальной модели в контроллере, и этот код работает отлично. Это мой sql запрос:

SELECT skapp.p.*, c1db_pegawai.e.eselon, c1db_pegawai.j.nama_jenis FROM skapp.ref_tunjangan_struktural p
                JOIN c1db_pegawai.r_eselon e on e.id = p.eselon_id
                JOIN c1db_pegawai.r_jenis_pegawai j on j.id = p.jenis_pegawai_id

И результаты таковы: Query results

И я реализовал в Codeigniter и добавить это в моем коде:

$query = $this->db->query($sql);

на мой взгляд, в localhost тоже работает нормально. Это работа, потому что у меня есть две базы данных в моей локальной сети и запросить все эти две базы данных в одном локальном хосте. Но на моем живом сервере у меня есть две базы данных в отдельном месте. Я сделал это подключить конфигурацию базы данных, как описано в документации Codeigniter. Я также пробовал это на моем живом сервере, и это мой код в моей модели:

$this->db->select('p.* as p'); 
        $this->another->select('e.eselon as e, j.nama_jenis as j');
        $this->db->from('ref_tunjangan_struktural');
        $this->another->join('r_eselon','r_eselon.id = ref_tunjangan_struktural.eselon_id');
        $this->another->join('r_jenis_pegawai','r_jenis_pegawai.id = ref_tunjangan_struktural.jenis_pegawai_id');
        $this->db->order_by("ref_tunjangan_struktural.id", "asc");

и это мой контроллер для соединений с базой данных:

    $this->load->database('default',TRUE);  //first DB
    $this->another = $this->load->database('pegawai',TRUE); //second DB

но у меня есть результаты ошибок на моем живом сервере. $this->another мой запрос для второй базы данных. Но все равно есть ошибка. Пожалуйста, кто-нибудь может помочь мне исправить в моей модели живого сервера?

А это моя ошибка?

Error Number: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'as p FROM ref_tunjangan_struktural as p ORDER BY ref_tunjangan_struktural' at line 1 SELECT p.* as p` FROM ref_tunjangan_struktural as p ORDER BY ref_tunjangan_struktural.id ASC

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

вы не можете сделать это - вы не можете смешать 2 объекта QueryBuilder для создания одного запроса

Единственное, что вы можете сделать, это использовать свой первый экземпляр БД для подключиться к другой базе данных - но это имеет одно условие - ваш пользователь из вашей первой БД должен быть доступ ко второй - есть просто нет другой возможности

при данных условиях - должно работать следующее

$query = $this->db
    ->select('skapp.p.*,c1db_pegawai.e.eselon, c1db_pegawai.j.nama_jenis')
    ->from('skapp.ref_tunjangan_struktural p')
    ->join('c1db_pegawai.r_eselon e', 'e.id = p.eselon_id')
    ->join('c1db_pegawai.r_jenis_pegawai j', 'j.id = p.jenis_pegawai_id')
    ->get();

print_r($query->result());
0 голосов
/ 01 сентября 2018

Если это решит вашу проблему:

$this->db->select('*'); 
$this->another->select('e.eselon as e, j.nama_jenis as j');
$this->db->from('ref_tunjangan_struktural'); 
$this->another->join('r_eselon','r_eselon.id = ref_tunjangan_struktural.eselon_id'); 
$this->another->join('r_jenis_pegawai','r_jenis_pegawai.id = ref_tunjangan_struktural.jenis_pegawai_id');
$this->db->order_by("ref_tunjangan_struktural.id", "asc");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...