получение общей суммы за каждый день от json - PullRequest
0 голосов
/ 29 января 2019

Это код, который я хочу получить общее значение NO_OF_CTN для каждой даты.Я использую JSON, чтобы получить общую сумму.Но как я могу разделить значение каждого дня, чтобы они не суммировались вместе?

<?php

 include '../includes/db_conn.php';
 $final_query = "SELECT DATE, NO_OF_CTN
                 FROM `material_dtl_tbl` WHERE 
                 `material_dtl_tbl`.`DATE` BETWEEN '2018-11-01%' 
                 AND '2018-11-03%' GROUP BY STOCK_CODE ORDER BY DATE ASC
                ";

$rsEventList = mysqli_query($con, $final_query) or die(mysqli_error($con));

$data_array = array();

while ($row = mysqli_fetch_assoc($rsEventList)) {
    $data_array[] = array("date" => $row['DATE'],"num" => $row['NO_OF_CTN'],);
} 

?>
<script type="text/javascript"> 
var total = 0;
var data = <?php echo json_encode($data_array)?>;

for($i = 0; $i < data.length ; $i++){
         total += parseInt(data[$i].num);
}

document.write(total);

</script>

Используя этот способ, я могу получить сумму от 1 ноября до 3 ноября, но я хочу получить суммузначение 1 ноября, 2 ноября, 3 ноября вместо 3 дня вместе.Есть ли способы сделать это?Спасибо

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Так как вам кажется, что вы не заботитесь о STOCK_CODE на коробках, а просто хотите получить общее количество коробок в день, вы должны удалить STOCK_CODE из вашего GROUP BY и заменить его на DATE.Вам также необходимо удалить эти % s из значений, которые вы сравниваете DATE с:

$final_query = "SELECT `DATE`, NO_OF_CTN
                FROM `material_dtl_tbl` 
                WHERE `DATE` BETWEEN '2018-11-01' AND '2018-11-03' 
                GROUP BY `DATE`
                ORDER BY `DATE` ASC
               ";

Обратите внимание, что если ваши столбцы DATE представляют собой столбец TIMESTAMP или DATETIME, вам следуетиспользуйте DATE(DATE), чтобы преобразовать его в дату.

0 голосов
/ 29 января 2019

Вы можете достичь этого, используя только SQL

$final_query = "SELECT DATE as date, sum(NO_OF_CTN) as num
                 FROM `material_dtl_tbl` WHERE 
                 `material_dtl_tbl`.`DATE` BETWEEN '2018-11-01' 
                 AND '2018-11-03' GROUP BY STOCK_CODE, DATE
                 ORDER BY DATE ASC
                ";

$rsEventList = mysqli_query($con, $final_query) or die(mysqli_error($con));

$data_array = array();

while ($row = mysqli_fetch_assoc($rsEventList)) {
    $data_array[] = $row;
} 

Это будет суммировать NO_OF_CTN, разделенные датой и STOCK_CODE.Вам не нужно самим проходить через массив, следовательно, улучшайте производительность.

...