2013-11-20 173 views
2

我有兩個表'accounts_transactions'和'accounts_bills_transactions'。 我必須使用codeigniter的活動記錄將這兩個連接在一起。但用於連接的鍵列的名稱是不同的。因此,我沒有從輸出中的左表獲取鍵列。我應該寫什麼查詢以獲取結果中包含左側表格的關鍵列。 我的代碼是Codeigniter活動記錄左連接問題

$this->db->select('*'); 
    $this->db->from('accounts_transactions'); 
    $this->db->join('accounts_bills_transactions', 'accounts_transactions.id = accounts_bills_transactions.transaction_id','left'); 
    $query = $this->db->get(); 

所以,你看習慣了這裏加入鍵列,從第二table.The問題左表和TRANSACTION_ID ID是我沒有在獲取ID從左表result.But我得到所有其他列。我認爲這個問題是因爲用於join.ie列名稱的差異,因此兩個列名稱都沒有命名爲'id'。所以我怎樣才能從包含在左表中的id結果。

+0

這是正確的嗎? accounts_transactions.id = accounts_transactions.transaction_id,會不會是accounts_transactions.id = accounts_bills_transactions.transaction_id,你加入同一張表... – user2844810

+0

是的,這是一個錯字,我需要的查詢是accounts_transactions.id = accounts_bills_transactions.transaction_id並且它正在生成ambigouus列錯誤 –

回答

5

你可以別名他們:

$this->db->select('accounts_transatctions.*, account_transactions.id AS a_id, 
        accounts_bills_transactions.*, 
        account_bills_transactions.id AS ab_id'); 
$this->db->from('accounts_transactions'); 
$this->db->join('accounts_bills_transactions', 'accounts_transactions.id = accounts_transactions.transaction_id','left'); 
$query = $this->db->get(); 

兩個ID現在將作爲a_idab_id(或任何別名你選擇)

注:我不知道,如果你能AR中的別名,而不避免轉義(有一段時間沒有使用CI)。如果您遇到任何錯誤的原因,只是通過false作爲$this->db->select()秒參數:

$this->db->select('...', false); 
+0

我試過了..但是我只從左表中獲取字段:( –

+0

您可以嘗試列出選擇中的所有列。您確定,並且您的查詢正常嗎?我的意思是,也許你不想要一個左連接... –

+0

我嚴格需要左連接:) –

3

,如果你使用混淆這 - $>其中或$這個 - 你可以試試這個>加入

$query = $this->db->query("select ......"); 

return $query; 
1

你問題很簡單。您可以使用此查詢

$query = $this->db 
       ->select('at.*') 
       ->select('abt.id as abt_id'); 
       ->from('accounts_transactions at'); 
       ->join('accounts_bills_transactions abt', 'at.id = abt.transaction_id','left'); 
       ->get() 
       ->result(); 

當連接中使用相同的列時,它只會選擇一個。你需要給第二張表中的另一列給予幫助。最佳做法是使用這樣的結構

accounts_transatctions 
-------------------------- 
accounts_transatctions_id 
other_columns 

accounts_bills_transactions 
--------------------------- 
accounts_bills_transactions_id 
accounts_transatctions_id 
other_columns