2012-08-16 113 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"); 
相关问题