2014-03-04 102 views
0

我試圖在CodeIgniter中使用Active Record來複制以下查詢,但我無法找到文檔中的位置或搜索在查詢中如何使用USINGCodeIgniter Active Record在查詢中使用「USING」

SELECT * 
FROM categories C 
LEFT OUTER JOIN motorcycle_brands MB 
USING (CatID) 
LEFT OUTER JOIN powersport_categories PS 
USING (CatID) 
WHERE C.CatID = :uniqueID 

這是我現在有:

$this->db->select('*'); 
$this->db->from('categories C'); 
$this->db->join('motorcycle_brands MB', 'CatID', 'left outer'); 
$this->db->join('powersport_categories PS', 'CatID', 'left outer'); 
$this->db->where('C.CatID =', $this->option_id); 
$suboptions = $this->db->get(); 

我試圖改變

$this->db->join('motorcycle_brands MB', 'USING (CatID)', 'left outer'); 
$this->db->join('powersport_categories PS', 'USING (CatID)', 'left outer'); 
+0

你好嗎,你下面的'提到你的代碼中的任何錯誤這是我現在有: '? –

回答

2

有沒有內置支持使用JOIN在活動記錄類使用。你可以做的最好的是改變這個文件中的「system/database/DB_active_rec.php」中的join()函數。

請參考此問題的完整參考。 codeigniter active records join with using?

0

如果多個列共享相同的名稱,但不想使用所有這些公用列進行連接,則會使用USING子句。 USING子句中列出的列在語句中不能包含任何限定符,包括WHERE子句:

ON子句用於連接兩個表中列名不匹配的表。連接條件從WHERE子句中的過濾條件中刪除:

所以,你的代碼應該是,

$this->db->select('*'); 
$this->db->from('categories C'); 
$this->db->join('motorcycle_brands MB', 'MB.CatID = C.Id', 'left outer'); 
$this->db->join('powersport_categories PS', 'C.Id = PS.CatID ', 'left outer'); 
$this->db->where('C.CatID =', $this->option_id); 
$suboptions = $this->db->get(); 
+0

這給了我一個錯誤,但我發現自從我發佈這個問題後就想通了,但現在我的問題是,我在'motorcycle_brands'和'powersport_categories'中都有'SubID'和'SubName',所以它爲'motorcycle_brands'返回空值但返回'powersport_categories'中的所有行我需要弄清楚下一步要修復這個 – Yamaha32088

+0

錯誤,因爲列名。我剛剛發佈了虛擬列名稱的答案。希望你可以像表中那樣更改列名。 –

相關問題