0

我在旧代码中设置了这个 sql 语句,并希望将其移至活动记录,我分阶段解决的问题是如何执行

 SELECT news_items.id FROM 

 (SELECT news_items.* FROM news_items 
 JOIN feeds ON feeds.id=news_items.feed 
 LEFT JOIN news_item_country ON news_item_country.id=news_items.country 
 WHERE news_items.id=30758 
 ORDER BY date_item DESC ) 

 AS news_items

 GROUP BY news_items.id 
 ORDER BY date_item DESC

尝试使用 Active Record 执行此操作,首先我创建了进入选择内部的选择,至少这是我认为需要完成的。

$news_items = $this->db->select('default_news_items.*')
              ->from('default_news_items ')
              ->join('default_feeds','default_feeds.id=default_news_items.feed')
->join('default_news_item_country','default_news_item_country.id=default_news_items.country','left')
->join('default_news_item_options','default_news_item_options.id=default_news_items.options','left')
              ->where($where)                        
              ->order_by('date_item DESC')
              ->limit($limit)
              ->get();               

接下来,我创建实际的选择并引用 from 中的另一个选择

    if ($query = $this->db->select("
                            news_items.id,
                    ->from($news_items)
                    ->group_by('news_items.id')
                    ->get()) {

它没有用,所以我问是否有人有这方面的经验以及如何去做?

4

2 回答 2

0

看看我的这个答案,这可能有助于你如何实现它。

在 codeigniter 中使用 Mysql WHERE IN 子句

于 2013-03-05T06:42:32.530 回答
0

您不能直接在本机活动记录语法中执行子查询。查看此答案以获取解决方案:

codeigniter 活动记录中的子查询

(作者为活动记录子查询写了一个库http://labs.nticompassinc.com/CodeIgniter-Subqueries/

如果没有这种或类似的技术,您至少需要为子查询 ( $news_items) 保留当前的选择代码。

于 2013-03-04T22:28:32.020 回答