I don't know this will help, but you can try:
$subquery1 = db_select('tab1','t1');
$subquery1->fields('t1',array('id','fname');
$subquery1->condition('t1.fname', 'Frank')
$subquery2 = db_select('tab2','t2');
$subquery2->fields('t2',array('id','fname');
$subquery1->condition('t2.lname', 'Sinatra')
$subquery2 ->orderBy('t2.fname','DESC');
$query = Database::getConnection()
->select($subquery1->union($subquery2, 'UNION ALL');
)
$result = $subquery1->execute>fields(NULL, array('id','fname');
...)