MySQL: filling empty fields with zeroes when using GROUP BY

后端 未结 4 394
孤城傲影
孤城傲影 2020-12-30 09:49

I\'ve got MySQL table

CREATE TABLE cms_webstat (
    ID int NOT NULL auto_increment PRIMARY KEY,
    TIMESTAMP_X timestamp DEFAULT CURRENT_TIMESTAMP,
    # .         


        
4条回答
  •  失恋的感觉
    2020-12-30 10:26

    $sql = 'SELECT g, MAX(v) AS v, MAX(c) AS c FROM (';
    $sql .= '(SELECT DATE_FORMAT(viewed, \'%d.%m.%Y\') AS g, COUNT(1) AS v, 0 AS c FROM '.$this->prefix.'view WHERE campaignid IN ('.join(', ',$ids).') GROUP BY g)';
    $sql .= ' UNION (SELECT DATE_FORMAT(clicked, \'%d.%m.%Y\') AS g, 0 AS v, COUNT(1) AS c FROM '.$this->prefix.'clicks WHERE campaignid IN ('.join(', ',$ids).') GROUP BY g)';
    $today = strtotime("00:00:00");
    for ($i=$today; $i>=time()-30*86400; $i-=86400) {
        $sql .= ' UNION (SELECT \''.date('d.m.Y',$i).'\' AS g, 0 AS v, 0 AS c)';
    }
    $sql .= ') AS tmp GROUP BY g ORDER BY g DESC';
    
    $chart = DB::getAll($sql);
    p($chart);
    

    Thanks! Made it! From 2 tables, clicks and views, joined.. works. ajaxel.com

提交回复
热议问题