您可以尝试将查询分为两个Zend_Db_Select
语句- 父查询和子查询。您可以将Zend_Db_Select
对象用作from()
方法的参数,如下所示:
$mainQuery = $db->select();
$mainQuery->from('user');
$sub = $db->select();
$sub->from('company');
$mainQuery->from(array('subquery' => $sub));
然后您将得到这种查询:
SELECT `user`.*, `sub`.* FROM `user`
INNER JOIN (
SELECT `company`.* FROM `company`
) AS `sub`
如您所见,INNER JOIN
当您第二次添加时,它会自动添加from()
-但我认为,可以将查询重写为用户联接,而不是语法中的multi。因此,您应该使用joinInner()
method,因为这样您就可以将连接条件指定为它的第二个参数。
注意,该子查询与主查询类似,因此您可以构建主查询,将其克隆为子查询,并且由于Zend_Db_Select
可能而删除了不必要的部分(reset()
方法)并替换了它们:
$mainQuery = $db->select(); //and rest
$subQuery = clone $mainQuery;
$subQuery->reset(Zend_Db_Select::WHERE);
$subQuery->where(); // and add valid conditions for subquery