【问题标题】:Drupal 7 db_select nested select queryDrupal 7 db_select 嵌套选择查询
【发布时间】:2012-12-11 10:35:48
【问题描述】:

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

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

【问题讨论】:

标签: mysql sql drupal drupal-7 drupal-modules


【解决方案1】:

语义上很相似:

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

【讨论】:

  • 那不会在主查询中产生 AND,我认为他需要 OR 与子查询的术语吗?
  • 太棒了!它工作正常。只需在导致解析错误的情况下修复额外的刹车。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 2018-03-22
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 2018-05-08
  • 2013-01-19
相关资源
最近更新 更多