2012-12-11 1 views
4

중첩 된 선택 쿼리를 Drual로 변환하는 방법 7 db_select? 되어 다음 문제 쿼리 :Drupal 7 db_select 중첩 선택 쿼리

select 
    * 
from 
    tbl_word 
where 
    EngWord like '%apple%' or 
    WordID in (
     select 
      WordID 
     from 
      tbl_subword 
     where 
      EngWord like '%apple%' 
    ); 
+0

볼 http://thanhnp.wordpress.com/2011/09/15/write-a-sub-query-by -db_select-drupal7/ – user7282

답변

5

는 의미 적 꽤를 닮아있다 : ​​

$term = 'apple'; 

$sub_query = db_select('tbl_subword') 
    ->fields('tbl_subword', array('WordID')) 
    ->condition('EngWord', '%' . db_like($term) . '%'), 'LIKE'); 

$query = db_select('tbl_word') 
    ->fields('tbl_word') 
    ->condition(db_or() 
    ->condition('EngWord', '%' . db_like($term) . '%', 'LIKE') 
    ->condition('WordID', $sub_query, 'IN') 
); 

$results = $query->execute()->fetchAll(); 
+0

메인 쿼리에 AND를 생성하지 않겠습니까? 그는 서브 쿼리와 용어를 OR해야 할 필요가 있다고 생각합니까? – KerrM

+0

@KerrM 좋은 점, 그 대답을 놓친 것 – Clive

+0

좋아요! 그것의 올바르게 작동합니다. 구문 분석 오류의 원인이되는 조건에서 여분의 브래킷을 수정하십시오. – Cyber