2017-05-16 50 views
1

我有日期和值的表,不是所有的日期是可用的,所以他們是不是我需要證明零:PHP和MySQL,顯示空天

$this->db->limit($days); 
    $dati = $this->db->query('SELECT sum(eur_80) as eur_80, day_stamp FROM table WHERE user_id = ? GROUP BY day_stamp ORDER BY rendi_id DESC', 119)->result(); 

    echo "periodo,guadagno" . PHP_EOL; 

    $date = date('Y-m-d', strtotime('-' . $days . ' days')); 
    for ($d = 0; $d <= $days - 1; $d++) { 
     $day = date('Y-m-d', strtotime($date . " +" . $d . " day")); 
     foreach ($dati as $stats => $stat) { 
      if ($stat->day_stamp === $day) { 
       echo $stat->day_stamp . "," . decimali($stat->eur_80) . PHP_EOL; 
      } else { 
       echo date('Y-m-d', strtotime($date . " +" . $d . " day")) . ",0.0" . PHP_EOL; 
      } 
     } 
    } 

這個返回多行:

periodo,guadagno 
2017-05-09,0.0 
2017-05-09,0.5385 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-09,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-10,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-11,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-12,0.0 
2017-05-13,0.5680 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-13,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-14,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 
2017-05-15,0.0 

我需要的是每個日期只顯示一個項目,我在哪裏做錯了?

+0

你是指'DISTINCT day_stamp'嗎? – Edwin

回答

2

您必須記住,如果您在數據庫中發現了某個項目,並且只有當您發現有一天您需要將您的輸出設置爲零時纔會發現該項目。

$this->db->limit($days); 
$dati = $this->db->query('SELECT sum(eur_80) as eur_80, day_stamp FROM table WHERE user_id = ? GROUP BY day_stamp ORDER BY rendi_id DESC', 119)->result(); 

echo "periodo,guadagno" . PHP_EOL; 

$date = date('Y-m-d', strtotime('-' . $days . ' days')); 
for ($d = 0; $d <= $days - 1; $d++) { 
    $day = date('Y-m-d', strtotime($date . " +" . $d . " day")); 
    $dayFound = false; 
    foreach ($dati as $stats => $stat) { 
     if ($stat->day_stamp === $day) { 
      echo $stat->day_stamp . "," . decimali($stat->eur_80) . PHP_EOL; 
      $dayFound = true; 
     } 
    } 
    if (!$dayFound) 
      echo date('Y-m-d', strtotime($date . " +" . $d . " day")) . ",0.0" . PHP_EOL; 
} 
+0

沒錯!謝謝 –