【问题标题】:Join Query from 2 Table in 2 Different Databases in CodeIgniter在 CodeIgniter 中加入来自 2 个不同数据库中的 2 个表的查询
【发布时间】:2020-02-03 03:42:20
【问题描述】:

我有 2 个数据库需要加入。

这是我的查询,但 $db2 仅适用于第二个数据库,$this->db->query 仅适用于第一个数据库。

     $akses = $db2->query("select A.uName, A.userPwd, A.[Nomor Induk], B.id_jabatan, B.nama FROM tUser A
                                LEFT JOIN karyawan B ON B.nik = A.[Nomor Induk]
                                LEFT JOIN bagian_departemen C ON C.id_bagian_dept = B.id_bagian_dept
                                WHERE A.uName = '$username' AND A.userPwd = '$password'"
                            );

我想知道从 2 个数据库中加入 2 个表的语法。

数据库:

$db['default'] = array(
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'helpdesk',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'striction' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

$db['another_db'] = array(
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'produksi',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'striction' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

【问题讨论】:

  • codeigniter 的语法是否可行?
  • 您将问题标记为 SQL-Server,因此如果您的 Codeigniter 连接到 Microsoft SQL 服务器,那么它是有效的,只需使用第一个示例中的原始查询即可。如果您使用的是 MySQL,那么您需要更改问题中的标签,而该解决方案将不适合您

标签: php sql sql-server codeigniter


【解决方案1】:

试试这样:

$this->db->select("db1.table.column")
$this->db->join('db1.table', 'db1.table.column = db2.table.column');
$query = $this->db->get();

【讨论】:

  • 我们需要创建到第一个和第二个数据库的连接吗?
  • 不,您不需要定义另一个连接。 db1 是您的实际数据库名称,db2 是您在 mysql 中的另一个实际数据库名称。
  • 我试过这个语法 $this->db->select("produksi.tUser.uName, produksi.tUser.userPwd, produksi.tUser[Nomor Induk], helpdesk.karyawan.id_jabatan, helpdesk. karyawan.nama"); $this->db->join('helpdesk.karyawan', 'helpdesk.kayawan.nik = produksi.tUser.[Nomor Induk]'); $this->db->join('bagian_departemen', 'helpdesk.bagian_departemen.id_bagian_dept = helpdesk.karyawan.id_bagian_dept'); $query = $this->db->get();但出现错误 42000。
  • [Nomor Induk] 为什么会这样,您的查询创建语法错误。打印您的最后一个查询并检查语法错误的位置。
  • [Nomor Induk] 是表 tUser 中列的名称
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 2013-11-23
  • 2019-10-18
  • 2017-09-28
相关资源
最近更新 更多