Drupal 7 db_select nested select query

drupal, drupal-7, drupal-modules, mysql, sql

Solution

Semantically it's pretty simliar:

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

Problem

How to convert nested select queries to Drual 7 db_select? Following is the problem query: ``` select * from tbl_word where EngWord like '%apple%' or WordID in ( select WordID from tbl_subword where EngWord like '%apple%' ); ```

Original source