Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Drupal 7 db_选择嵌套选择查询_Mysql_Sql_Drupal_Drupal 7_Drupal Modules - Fatal编程技术网

Mysql Drupal 7 db_选择嵌套选择查询

Mysql Drupal 7 db_选择嵌套选择查询,mysql,sql,drupal,drupal-7,drupal-modules,Mysql,Sql,Drupal,Drupal 7,Drupal Modules,如何将嵌套的select查询转换为Drual 7 db_select?以下是问题查询: select * from tbl_word where EngWord like '%apple%' or WordID in ( select WordID from tbl_subword where EngWord like '%

如何将嵌套的select查询转换为Drual 7 db_select?以下是问题查询:

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

从语义上讲,这很简单:

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

看到了吗,这不会产生一个,在主查询中,我认为他需要,或者子查询的术语?太好了!它工作正常。只要在导致解析错误的条件下修复额外的braket。