2011-07-27 5 views
1

にしてMySQLのクエリを翻訳私はZendの形式にこの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 

(PS:それはmodifsで正しいMySQLの文です)

私は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') 
    ; 

これはうまくいきませんでした。

+0

としてSQLとの直接デシベルの特殊なアダプタを使用してこれをやってみましたがありますか?エラーメッセージを含め、常に期待する内容と実際に得られる内容を正確に記述します。 – outis

答えて

1

は、あなたが正確に、それは動作しませんでしたどのように、中...

$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(); 
+0

それは私に多くの助けになります!非常にありがとう:) – Salem

+0

喜んで助けてくれた:) – user466764