将带有子select的MySQL查询转换为Zend格式

将带有子select的MySQL查询转换为Zend格式,mysql,zend-framework,zend-db,Mysql,Zend Framework,Zend Db,我想将此MySQL查询转换为Zend格式: SELECT count_panne, mvt, nextHost, dtmvt, stat FROM ( SELECT COUNT(myTable.snMCB) AS count_panne, myTable.mvt, myTable.nextHost, myTable.dtmvt, myTable.stat FROM myDB.myTable myTab

我想将此MySQL查询转换为Zend格式:

SELECT count_panne, mvt, nextHost, dtmvt, stat  
FROM ( SELECT COUNT(myTable.snMCB) AS count_panne,  
        myTable.mvt,  
        myTable.nextHost,  
        myTable.dtmvt,  
        myTable.stat  
    FROM myDB.myTable myTable  
    WHERE (myTable.dtmvt = calendar__gregorian__today__)  
      AND (myTable.statut = 'NOOK')  
    GROUP BY myTable.snMCB) AS myTempTable  
 WHERE count_panne > 2  
 ORDER BY count_panne DESC   
(附:这是一个正确的mysql句子,带有modifs)

我用Zend尝试了以下方法:

$subSelect = $dbTable->select()  
    ->from($dbTable,array(
        'COUNT(myTable.snMCB) AS count_panne',
        'myTable.mvt',
        'myTable.nextHost',
        'myTable.dtmvt',
        'myTable.nextHost'))
    ->where("myTable.dtmvt BETWEEN '$dateDeb' AND '$dateFin'")
    ->where('myTable.stat = ?', 'NOOK')
    ->group('myTable.snMCB')
    ;

$select = $dbTable->select()
    ->setIntegrityCheck(false)
    ->from(new Zend_Db_Expr($subSelect),
            array('count_panne',
                'mvt',
                'nextHost',
                'dtmvt',
                'statut'))
    ->where('count_panne > 2')
    ->order('count_panne DESC')
    ;

它不起作用。

您是否尝试过使用db adpater direct with sql来完成此操作,如中所示

    $db = $this->getAdapter();

$query = $db->prepare("SELECT count_panne, mvt, nextHost, dtmvt, stat  
                       FROM ( SELECT COUNT(myTable.snMCB) AS count_panne,  
                             myTable.mvt,  
                             myTable.nextHost,  
                             myTable.dtmvt,  
                             myTable.stat  
                        FROM myDB.myTable myTable  
                       WHERE (myTable.dtmvt = calendar__gregorian__today__)  
                         AND (myTable.statut = 'NOOK')  
                       GROUP BY myTable.snMCB) AS myTempTable  
                       WHERE count_panne > 2  
                    ORDER BY count_panne DESC");

        $query->execute();
        return $query->fetchAll();

您是否尝试过使用db adpater direct和sql进行此操作,如

    $db = $this->getAdapter();

$query = $db->prepare("SELECT count_panne, mvt, nextHost, dtmvt, stat  
                       FROM ( SELECT COUNT(myTable.snMCB) AS count_panne,  
                             myTable.mvt,  
                             myTable.nextHost,  
                             myTable.dtmvt,  
                             myTable.stat  
                        FROM myDB.myTable myTable  
                       WHERE (myTable.dtmvt = calendar__gregorian__today__)  
                         AND (myTable.statut = 'NOOK')  
                       GROUP BY myTable.snMCB) AS myTempTable  
                       WHERE count_panne > 2  
                    ORDER BY count_panne DESC");

        $query->execute();
        return $query->fetchAll();

到底是怎么回事?始终准确地说明您的期望和实际得到的信息,包括任何错误消息。它究竟是如何工作的?始终准确地说明您的期望和实际得到的信息,包括任何错误消息。