Php zend框架查询

Php zend框架查询,php,sql,zend-framework,Php,Sql,Zend Framework,有人能帮我解答这个问题吗。Basicall我知道如何在Zend框架中连接表,但我不知道的是最后一部分是从“和……”开始的,这就是我开始子查询的地方 SELECT requests.`email`,requests.`title`, `request_category`.`request_category_name`, `request_route_category`.`department_id`,`departments`.`department_name` FROM requ

有人能帮我解答这个问题吗。Basicall我知道如何在Zend框架中连接表,但我不知道的是最后一部分是从“和……”开始的,这就是我开始子查询的地方

SELECT requests.`email`,requests.`title`, `request_category`.`request_category_name`,
       `request_route_category`.`department_id`,`departments`.`department_name`
 FROM requests 
 JOIN `request_category` ON requests.`requests_category_id` = request_category.`request_category_id` 
 JOIN `request_route_category` ON `request_category`.`path_id` = `request_route_category`.`path_id` 
 JOIN `departments` ON `request_route_category`.`department_id` = `departments`.`department_id` 
                    AND (SELECT `department_id` 
                         FROM `request_route_category` 
                         WHERE `request_route_category`.`department_id`=`departments`.`department_id` 
                         AND `request_route_category`.`is_complete`=0 
                         LIMIT 1)=7
我现在有这个

$select=$this->select()
        ->setIntegrityCheck(false)
        ->from($this->_name,array('reqemail'=>'email','reqcreated'=>'created'))
        ->join('request_category', 'requests.requests_category_id=request_category.request_category_id',array('catpath'=>'path_id','catid'=>'request_category.request_category_id','catname'=>'request_category_name'))
        ->join('request_route_category', 'request_category.path_id=request_route_category.path_id',array())
        ->join('departments','request_route_category.department_id=departments.department_id');

据我所知,您无法使用Join with Zend_DB进行子查询,但您可以这样做:

$subQuery = $this->select()
        ->setIntegrityCheck(false)
        ->from('request_route_category')
        ->where('request_route_category.department_id = departments.department_id')
        ->where('request_route_category.is_complete = ?', 0)
        ->limit(1);

$sql = $select=$this->select()
    ->setIntegrityCheck(false)
    ->from($this->_name,array('reqemail'=>'email','reqcreated'=>'created'))
    ->join('request_category', 'requests.requests_category_id=request_category.request_category_id',array('catpath'=>'path_id','catid'=>'request_category.request_category_id','catname'=>'request_category_name'))
    ->join('request_route_category', 'request_category.path_id=request_route_category.path_id',array())
    ->join('departments','request_route_category.department_id=departments.department_id AND ('.$subQuery.')=7');

据我所知,您无法使用Join with Zend_DB进行子查询,但您可以这样做:

$subQuery = $this->select()
        ->setIntegrityCheck(false)
        ->from('request_route_category')
        ->where('request_route_category.department_id = departments.department_id')
        ->where('request_route_category.is_complete = ?', 0)
        ->limit(1);

$sql = $select=$this->select()
    ->setIntegrityCheck(false)
    ->from($this->_name,array('reqemail'=>'email','reqcreated'=>'created'))
    ->join('request_category', 'requests.requests_category_id=request_category.request_category_id',array('catpath'=>'path_id','catid'=>'request_category.request_category_id','catname'=>'request_category_name'))
    ->join('request_route_category', 'request_category.path_id=request_route_category.path_id',array())
    ->join('departments','request_route_category.department_id=departments.department_id AND ('.$subQuery.')=7');

你能发布你现在拥有的或你尝试过的吗?@jamon我的意思是如果你能发布你拥有的zend_db_select。你写过你知道如何连接,因此,我假设您至少有部分zend_db_select用于此查询。@Marcin我已经包含了我目前所拥有的内容,请看一看为什么不提供简单的sql?@yes123实际上这是一个替代方案,但我认为对于此项目,最好使用zend_db_select。您可以发布您现在拥有的内容或您尝试过的内容吗?@jamon我的意思是如果你可以发布你的zend_db_选择。你写道你知道如何进行连接,所以我假设你至少为这个查询做了部分zend_db_select。@Marcin我已经包括了我现在所拥有的内容,请看一看为什么不给它简单的sql?@yes123实际上这是一个备选方案,但我认为对于这个项目最好使用Zends方式