2012-08-16 177 views
1

如何在Zend中寫這個查詢SELECT COUNT +(SELECT COUNT FROM表1 WHERE)FROM表1中的Zend

SELECT COUNT(1) AS `NoOfQueries` , DATE(CONVERT_TZ(FROM_UNIXTIME(poocher.cdate, '%Y-%m-%d %T') , '-9:30', '+00:00')) AS `Dat` , COUNT(1) + ( 
    SELECT COUNT(1) 
    FROM tblsmsuser poocherb4 
    WHERE DATE(CONVERT_TZ(FROM_UNIXTIME(poocherb4.cdate, '%Y-%m-%d %T') , '-9:30', '+00:00')) <= DATE_SUB( `Dat` , INTERVAL 1 
    DAY)) AS cumulative_sum 
FROM tblsmsuser poocher 
GROUP BY `Dat` 

我已經試過是

$this->select = new Zend_Db_Select($this->db); 
$selctSub = $this->select->from("tblsmsuser",array("count(1)"))->where("DATE(CONVERT_TZ(FROM_UNIXTIME(tblsmsuser.cdate, '%Y-%m-%d %T') , '-9:30', '+00:00')) <= DATE_SUB( Dat , INTERVAL 1 DAY)"); 
echo $select_query_ans = $this->select->from(array("poocher" =>"tblsmsuser"),array("NoOfQueries"=>"count(1)","Dat"=>"DATE(CONVERT_TZ(FROM_UNIXTIME(poocher.cdate,'%Y-%m-%d %T'),'-9:30','+00:00'))","cumulative_sum"=>"count(1) + (".$selctSub.")"))->group("Dat"); 

輸出

SELECT count(1) AS `NoOfQueries`, DATE(CONVERT_TZ(FROM_UNIXTIME(poocher.cdate,'%Y-%m-%d %T'),'-9:30','+00:00')) AS `Dat`, count(1) + (SELECT count(1) AS `NoOfQueriesb4` FROM `tblsmsuser` AS ```poocherb4`` WHERE (DATE(CONVERT_TZ(FROM_UNIXTIME(poocherb4.cdate, '%Y-%m-%d %T') , '-9:30', '+00:00')) <= DATE_SUB(Dat , INTERVAL 1 DAY)))`, count(1) AS `NoOfQueriesb4` FROM `tblsmsuser` AS `poocher` INNER JOIN `tblsmsuser` AS `` WHERE (DATE(CONVERT_TZ(FROM_UNIXTIME(poocherb4.cdate, '%Y-%m-%d %T') , '-9:30', '+00:00')) <= DATE_SUB(Dat , INTERVAL 1 DAY)) GROUP BY `Dat` 
+2

我甚至不會嘗試解析這個查詢,我的SQL不能勝任。但是,您可能會在此查詢中使用[Zend_Db_Expression](http://framework.zend.com/manual/en/zend.db.select.html#zend.db.select.building.columns-expr)獲利。 – RockyFord 2012-08-16 07:43:24

+0

@RockyFord非常感謝http://framework.zend.com/manual/en/zend.db.select.html#zend.db.select.building.columns-expr完成了這個把戲 – Wazzzy 2012-08-16 09:30:22

+0

把你的解決方案放到一個答案中,你可以接受你自己的答案。它可能會幫助別人。 – RockyFord 2012-08-16 17:03:05

回答

0

這是我工作的代碼

$this->select = new Zend_Db_Select($this->db); 
    $selctSub = $this->select->from("tblsmsuser",array("count(1)"))->where("DATE(CONVERT_TZ(FROM_UNIXTIME(tblsmsuser.cdate, '%Y-%m-%d %T') , '-9:30', '+00:00')) <= DATE_SUB( Dat , INTERVAL 1 DAY)"); 
    $this->select = new Zend_Db_Select($this->db); //ADDED line 
    echo $select_query_ans = $this->select->from(array("poocher" =>"tblsmsuser"),array("NoOfQueries"=>"count(1)","Dat"=>"DATE(CONVERT_TZ(FROM_UNIXTIME(poocher.cdate,'%Y-%m-%d %T'),'-9:30','+00:00'))","cumulative_sum"=>"count(1) + (".$selctSub.")"))->group("Dat"); 
相關問題