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`
我甚至不會嘗試解析這個查詢,我的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
@RockyFord非常感謝http://framework.zend.com/manual/en/zend.db.select.html#zend.db.select.building.columns-expr完成了這個把戲 – Wazzzy 2012-08-16 09:30:22
把你的解決方案放到一個答案中,你可以接受你自己的答案。它可能會幫助別人。 – RockyFord 2012-08-16 17:03:05