Codeigniter子查询加入

问题描述:

如何在codeigniter中的活动记录中写入以下查询?Codeigniter子查询加入

选择tbl_list.id,tbl_list_items.name 从tbl_list 加入上tbl_list_items.id tbl_list_items =(从选择tbl_list_items其中tbl_list_items.id = LIST_ID通过tbl_list.id ASC tbl_list_items.item_no LIMIT 1次序)

更新:

这就是我出来,但它没有完成这项工作。

​​

欣赏任何帮助。谢谢。

+0

最后更改的语句来 选择tbl_list.id,从tbl_list tbl_list_items.name加入上tbl_list_items.id tbl_list_items =(从选择tbl_list_items其中tbl_list_items.id = listing_id通过tbl_list.id ITEM_NO ASC LIMIT 1次序); 积极的记录似乎更满意这一点。 – 2011-12-31 16:28:03

+0

您可以使用直接SQL语句使用Active Record。但是,您并没有将声明拆分为可互换的组件。 – 2012-01-01 14:01:33

Review the Active Record methods available to you in CodeIgniter.

Then review a CI library to extend it to handle subqueries available on CodeIgniter

There is a walk-through about how CI is doing this under-the-hood

Found a github codebase for implementing subqueries in CodeIgniter 1.7 and 2.x (see link)

编辑:

修改过的代码下面是阿西斯吨。您还可以查看第4个链接的示例。

要复制你真是什么尝试做,代码将类似于(这是未经测试......但希望开始你在正确的道路上):

$this->db->select('tbl_list.id, tbl_list.names'); 
$this->db->from('tbl_list'); 
$sub = $this->subquery->start_subquery('join', 'left', 'tli.id = tbl_list.id'); 
$sub->select('tbl_list_items.id')->from('tbl_list_items')->where('tbl_list_items.list_id=tbl_list.id '); 
$sub->db->order_by('ASC'); 
$sub->db->limit(1); 
$this->subquery->end_subquery('tli'); 

关键是这个声明:$ this-> subquery-> end_subquery('tli'); 这里发生了什么,它会将子查询的结果视为AS tli,以便您可以在tli.id中引用它。

希望这有助于!

+0

我没有得到第三行,tbl_list_items.id不等于tbl_list.id而是等于select。我阅读了文档,但没有显示从加入开始子查询的方式。任何建议。 – 2011-12-31 15:45:06

+0

尝试第三行:$ sub = $ this-> subquery-> start_subquery('join',tbl_list_items.id = list_ids');对于查询的其余部分,创建一个使用'... AS'list_ids'的SELECT语句。我会在今天晚些时候写出来。 – 2012-01-01 14:13:09

+0

已更新,在CI中带有用于AR的子查询库的链接,并带有解释的新代码库。 – 2012-01-04 03:05:53