将sql中的查询转换为两个数据库中的codeigniter

vuktfyat  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(344)

我真的需要帮助。我必须加入两个数据库,我已经尝试在我的查询和实现在我的本地模型在控制器和这个代码进行完美。这是我的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

结果是:

我在codeigniter中实现并在代码中添加了以下内容:

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

在我看来,localhost也可以正常工作。这是因为我在本地有两个数据库,并在一个本地主机中查询所有这两个数据库。但在我的实时服务器中,我在不同的地方有两个数据库。我已经完成了像codeigniter文档中描述的那样的connectit数据库配置。我也在我的实时服务器上尝试过这个,这是我在模型中的代码:

$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
hpxqektj

hpxqektj1#

你不能这样做-你不能混合两个querybuilder对象来创建一个查询
你唯一能做的就是使用你的第一个db示例来连接到另一个数据库——但是这有一个条件——你的第一个db的用户必须访问第二个db——没有其他的可能
在给定的条件下-以下应该可以工作

$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());
eni9jsuy

eni9jsuy2#

如果这能解决您的问题:

$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");

相关问题