thinkphp mysql统计问题

那个下面NULL的要把他设置成0而且日期还要搞出来怎么办?就是说我上面那个是统计7天的数据的也就是11号到今天17号的数据的可是呢肯定不可能每天都有数据我要把数据拿出来做... 那个下面NULL的要把他设置成0而且日期还要搞出来怎么办?就是说我上面那个是统计7天的数据的也就是11号到今天17号的数据的 可是呢肯定不可能每天都有数据 我要把数据拿出来做到统计表里面可是没有数据的我要设置成0,其实需要两个数据一个是数据值一个是日期,该怎么设呢?求大神指点!!!之前方法在下面 展开
 我来答
songyipangbuo
2014-12-18 · TA获得超过744个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:255万
展开全部

不用循环去查,一次分组查询就可以了

$dates = array();
$endDate = strtotime('2014-12-27');
for($i = 7; $i > 0; $i--) { 
    $dates[] = "select '".date( 'Y-m-d', strtotime("-{$i} day", $endDate) )."' as date";
}
$dd = M()->table(M()->table("(".join(' union  ', $dates).") a")
     ->join('__PRODUCT_SELL__ b on a.date = left(b.consumpTime, 10)', "LEFT")
     ->select(false)." a")
     ->field("a.date,(case sum(a.productPrice) when sum(a.productPrice) then sum(a.productPrice) else 0 end) sum")
     ->group("a.date") 
     ->select();
dump($dd);

查询结果:

array(7) {

  [0] => array(2) {

    ["date"] => string(10) "2014-12-20"

    ["sum"] => string(1) "0"

  }

  [1] => array(2) {

    ["date"] => string(10) "2014-12-21"

    ["sum"] => string(1) "0"

  }

  [2] => array(2) {

    ["date"] => string(10) "2014-12-22"

    ["sum"] => string(1) "0"

  }

  [3] => array(2) {

    ["date"] => string(10) "2014-12-23"

    ["sum"] => string(1) "0"

  }

  [4] => array(2) {

    ["date"] => string(10) "2014-12-24"

    ["sum"] => string(2) "45"

  }

  [5] => array(2) {

    ["date"] => string(10) "2014-12-25"

    ["sum"] => string(2) "24"

  }

  [6] => array(2) {

    ["date"] => string(10) "2014-12-26"

    ["sum"] => string(1) "0"

  }

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式