您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何将复杂的SQL查询转换为Zend_Db_Select语句?

如何将复杂的SQL查询转换为Zend_Db_Select语句?

您可以尝试将查询分为两个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
SQLServer 2022/1/1 18:52:52 有354人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶