如何连接两个不同数据库的表

时间:2016-04-08 07:37:25

标签: codeigniter

我想在codeigniter中转换我的查询,这个查询使用两个数据库。这个工作在mysql但我不能在codeignitor.mysql查询中写这个查询如下:

$sqlStr = "select s.*,b.booking_status as bstatus,b.booking_id,e.mfg_date,e.ownership,e.evaluation_category,e.booking_id,pb.booking_cancel_status,pb.unverified_cancel_status
                from avstonau_poc.tbl_exchange e
                join avstonau_poc.tbl_stock s on e.exchange_id=s.exchange_id
                join avstonau_maruti_pune.tbl_booking_maruti pb on pb.booking_id=e.booking_id
                join avstonau_poc.tbl_booking b on b.stock_id=s.stock_id
                ";
            $result = mysql_query($sqlStr);  

2 个答案:

答案 0 :(得分:0)

参见Join query of two databases in codeigniter 检查一次是否有效 我也面临类似的问题 在database.php上添加第二个数据库凭据

setfill

并放

$db['db2']['hostname'] = 'ip/Rds';
$db['db2']['username'] = 'root';
$db['db2']['password'] = 'password';
$db['db2']['database'] = 'dbname';
$db['db2']['dbdriver'] = 'mysql';
$db['db2']['dbprefix'] = '';
$db['db2']['pconnect'] = TRUE;
$db['db2']['db_debug'] = TRUE;
$db['db2']['cache_on'] = FALSE;
$db['db2']['cachedir'] = '';
$db['db2']['char_set'] = 'utf8';
$db['db2']['dbcollat'] = 'utf8_general_ci';
$db['db2']['swap_pre'] = '';
$db['db2']['autoinit'] = TRUE;
$db['db2']['stricton'] = FALSE;

答案 1 :(得分:0)

可以这样做,但您需要允许相同的MySQL用户访问这两个数据库。执行此操作后,您可以正常使用$ this-> db,但需要在查询中指定数据库名称。请注意,您只需为第二个数据库指定数据库名称,而不必为默认数据库执行此操作。 例如:

    $this->db->select('table_from_default_db.id, 2nd_db_name.table_from_second_db.name');
    $this->db->from('2nd_db_name.table_from_second_db');
    $this->db->join('table_from_default_db', 'table_from_default_db.id = 2nd_db_name.table_from_second_db.id');
    $query = $this->db->get();