2013-03-04 4 views
0

내 이전 코드에서이 SQL 문 설정이 활성 레코드를 통해 이동할와 나는이CodeIgniter의 액티브 레코드는 2 개 이상의 테이블

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 
해야합니까 어떻게 함께 단계적있어 문제를 선택

액티브 레코드를 사용하여이 작업을 수행하려고 할 때, 적어도 내가 수행해야 할 필요가 있다고 생각되는 선택 안에 들어가는 선택을 만들었습니다.

$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();    

다음 나는 실제 선택을 만들고

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

그것은 작동하지 않았다에서 내부의 다른 선택 참조, 그래서 누군가가이 방법을 수행하는 방법에 경험이 있다면 내가 부탁 해요?

답변

0

기본 활성 레코드 구문에서 직접 하위 쿼리를 수행 할 수 없습니다. 솔루션이 답을 체크 아웃 :

subquery in codeigniter active record

당신이 적어도에 대한 현재의 선택의 코드를 유지하기 위해 필요한이 또는 유사한 기술없이

(저자는 활성 기록 하위 쿼리 http://labs.nticompassinc.com/CodeIgniter-Subqueries/에 대한 라이브러리를 썼다) 하위 쿼리 ($news_items).

+0

감사 jtheman, 나는 그것을 밖으로 시도하고 내 결과를 게시 할 수 있습니다. – user1557970