【问题标题】:Sum Up All Values Of Same Date总结同一日期的所有值
【发布时间】:2017-10-25 07:46:03
【问题描述】:

我想使用产品 ID 总结同一日期的所有 amount 条目。

数据库图片:

我想使用 php 和 mysql 以这种方式显示结果。

【问题讨论】:

  • Add values from same date的可能重复
  • @Jakob 对我不起作用,!你能帮帮我吗?
  • 只需获取每个日期和产品的数据,并在应用层中转换您的数据(通过 php)
  • AoA .. 没有其他解决方案可以手动避免每个日期? @MKhalidJunaid
  • 不是手动,您需要使用应用程序代码构建此逻辑以明智地显示数据日期

标签: php mysql database


【解决方案1】:

这是一个可能的解决方案。数据库表已命名为tborderdetail

/* I get data using json object (for convenience): */
    $arr = [];
    $s = "SELECT product_name, SUM(amount) AS amount, DATE_FORMAT(order_date,'%d %b %Y') AS order_date FROM tborderdetail GROUP BY product_name, DATE_FORMAT(order_date,'%d %b %Y') ORDER BY order_date DESC";
    $q1 = mysqli_query($con,$s); 
    while($row = mysqli_fetch_assoc($q1)){$arr[] = $row;} 
    $str = json_encode($arr);
    $data = json_decode($str);

    /* Populate three arrays that will be used to create the required table */
    $arr_dates = [];
    $arr_products = [];
    $arr_date_product_amount = [];

    foreach($data as $v){ 
    if(!in_array($v->order_date, $arr_dates)){ $arr_dates[] = $v->order_date; }
    if(!in_array($v->product_name, $arr_products)){ $arr_products[] = $v->product_name;}
    $dpv = str_replace(' ','',$v->product_name.$v->order_date);
    $arr_date_product_amount[$dpv] = $v->amount;}

    /* Start outputting the table and the top row */
    echo '<table><tr><td>Products</td>'; 
    foreach($arr_dates as $dt){ echo '<td>Sale on '.$dt.'</td>'; } 
    echo '</tr>';

    /* Output the other rows of the table: */
    foreach($arr_products as $pt){
    echo '<tr><td>'.$pt; 
    foreach($arr_dates as $dt){
    $dpv = str_replace(' ','',$pt.$dt);
    /* Ensure no errors due to missing values */
    echo '<td>'; if(array_key_exists($dpv,$arr_date_product_amount)){echo $arr_date_product_amount[$dpv];}
    echo '</td>';}
    echo '</tr>';}
    echo '</table>';

【讨论】:

  • 我真的很努力,但是这段代码没有显示任何结果! r 第二,我想问你,对于那个或 ana 数组来说,循环是更好的方法?
  • 好的,但是当您在 phpmyadmin SQL 中运行 SELECT product_name, amount, DATE_FORMAT(order_date,'%d %b %Y') AS order_date FROM sales GROUP BY product_name, DATE_FORMAT(order_date,'%d %b %Y') ORDER BY order_date desc 时会得到什么?
  • 它将仅显示每个产品的第一个订单的结果:(
  • 谢谢,那么当您在 phpmyadmin 中运行 SELECT product_name, amount, order_date FROM sales GROUP BY product_name, order_date ORDER BY order_date desc 时会得到什么(即不格式化 order_date)?
  • 所有订单按日期时间降序排列。
猜你喜欢
  • 2021-04-23
  • 2021-03-02
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多