2013-11-20 208 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