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でMysqlWHEREIN句を使用する

于 2013-03-05T06:42:32.530 に答える
0

ネイティブのアクティブ レコード構文でサブクエリを直接実行することはできません。解決策については、この回答を確認してください。

codeigniter アクティブ レコードのサブクエリ

(著者は、アクティブ レコードのサブクエリ用のライブラリを作成しましたhttp://labs.nticompassinc.com/CodeIgniter-Subqueries/ )

この手法または同様の手法がなければ、少なくともサブクエリ ( $news_items) に対して現在の選択コードを保持する必要があります。

于 2013-03-04T22:28:32.020 に答える