2014-02-12 56 views
0

我遇到了一些CodeIgniter問題,並從2個不同的數據庫中加入2個表。選擇加入mysql 2數據庫

我的第一個數據庫:values.companyname.be

我的第二個數據庫:int.companyname.be

所以我想加入這兩個數據庫的代碼點火器(或簡單地在PHP)和MySQL。

我有這個查詢,但它沒有工作。

public function get_values(){ 
     $query = $this->db->query('SELECT a.id,a.foreign_id,b.id,b.name FROM values.companyname.be a INNER JOIN int.companyname.be b ON a.foreign_id = b.id'); 

     return $query; 
    } 

當我試圖執行它,我的網站是我看這個:

數據庫出錯

錯誤編號:1064

你在你的SQL有一個錯誤句法;檢查 對應於你的MySQL服務器版本正確的語法使用 附近「.BE一個INNER JOIN int.activeme.be B關於a.company_id = b.id」在 線1

SELECT a.id,a.foreign_id,b.id,b.name FROM values.companyname.be a 
INNER JOIN int.companyname.be b ON a.foreign_id = b.id 
手冊

我認爲發生錯誤是因爲數據庫名稱中的點。

+0

使用反引號字符(')圍繞數據庫名稱 – PravinS

回答

0

您正試圖加入兩個數據庫!

連接是爲表,所以,你必須要表名爲values.companyname.beint.companyname.be你的SQL查詢是錯誤的。

您收到的MySQL錯誤告訴您第二個.不是預期的。試試這個:在語法

SELECT a.id, a.foreign_id, b.id,b.name 
FROM `values.companyname.be`.`coupon` a 
INNER JOIN `int.companyname.be`.`company` b 
ON a.foreign_id = b.id 

強調:

`dbnname`.`table.name` 
+0

非常感謝,解決了我的問題! – tomatediabolik

0

我覺得values.companyname.beint.companyname.be是你的表名。因此,使用`(反引號)周圍的表名

SELECT 
    a.id,a.foreign_id,b.id,b.name 
FROM `values.companyname.be` a 
INNER JOIN `int.companyname.be` b 
ON a.foreign_id = b.id 
+0

在這種情況下,sql解析器將查找名爲'values.companyname.be'的表(並且不會找到它)。 – Oerd

0

如果你的數據庫名稱實際上是有它的點(你爲什麼會這樣對自己?),那麼我將需要使用`一段單列圍繞數據庫名。

雖然從您的查詢中不清楚哪些點是數據庫名稱的一部分,哪些是將數據庫連接到表。