2013-12-09 14 views
1

我無法使用zend框架mysql groupby查詢。我試圖做到的,是這個查詢Zend Framework按情形分組

SELECT * FROM `price_list` AS `pl` 
GROUP BY 
CASE WHEN `pl`.`sub_folder` IS NULL THEN 
`pl`.`id` 
ELSE 
`pl`.`sub_folder` 
END 
ORDER BY `pl`.`date_added` DESC 

以下是我在Zend的方式試圖

$sql = $this->select()->setIntegrityCheck(false);  
$sql->from(array('pl'=>$this->_name), array('')) 
    ->columns($cols) 
    ->group("case when pl.sub_folder is null then pl.id else pl.sub_folder end"); 

但輸出這個SQL字符串的情況下,狀態錯誤報價:

SELECT * FROM `price_list_pdf` AS `pl` 
GROUP BY `CASE WHEN pl`.`sub_folder is null then 
pl`.`id 
ELSE 
pl`.`sub_folder 
end` 
ORDER BY `pl`.`date_added` DESC 

如何在字符串中清除這個`?還是有什麼更好的辦法呢?請幫助..

+0

你嘗試從組語句刪除單引號? –

+0

是的,我做了,我實際上是通過添加那些單引號 – zaw

+0

測試是的。我認爲你的SQL是不正確的。嘗試刪除單引號,除了別名 – Aditya

回答

2

對於轉義querys使用Expressions

$sql = $this->select()->setIntegrityCheck(false);  
$sql->from(array('pl'=>$this->_name), array('')) 
     ->columns($cols) 
     ->group(new Zend_Db_Expr("case when pl.sub_folder is null then pl.id else pl.sub_folder end")); 
+0

偉大的工作!我用「新的Zend_Db_Expr」代替。可能是「新的表達式」爲2.0版本 – zaw

+0

哦,我的錯,是的,我在想你使用zf2(沒有看到任何相關的zf1結構)...肯定zf1它就像你說''Zend_Db_Expr'' - 基本程序是一樣的 – ins0