【问题标题】:MYSQL PHP Subtotal with column edit带有列编辑的 MYSQL PHP 小计
【发布时间】:2022-01-24 13:42:23
【问题描述】:

正在为 MySQL 查询而苦苦挣扎。是时候寻求帮助了。 我正在尝试获取时间的小计,问题是我无法让其他列显示我想要的方式。用 PHP 编码。

除了表格值之外,还有隐藏的 ID 值,每行都不同。

我有表:

查询如下:

SELECT id, date, project, SUM(duration) AS duration FROM mytable GROUP BY date desc, id with rollup"

我没看错,但我想去掉项目名称,让列显示为“总持续时间:” 所以我不想为项目做小计,只是为了日期。但我想去掉总行中的项目名称。

我得到的输出:

我想要的输出:

提前致谢。

【问题讨论】:

标签: php mysql


【解决方案1】:

我在phpize放了一个例子:

以创建表为例:

create table mytable(id int, date datetime, project varchar(255), Duration int);
insert into mytable values(1, "2022-01-30", "Project 1", 3), 
                       (2, "2022-01-30", "Project 1", 2),
                       (3, "2022-01-30", "Project 2", 4),
                       (4, "2022-01-29", "Project 3", 4),
                       (5, "2022-01-28", "Project 3", 3),
                       (6, "2022-01-28", "Project 3", 2);

在 php 中,行循环对一个变量求和,并且在每次更改日期时,它会插入一行小计:

   <?php
use Carbon\Carbon;

$now = Carbon::now()->format('d/m/Y');

printf("Today is %s\nCurrent PHP version: %s \n\n", $now, phpversion());

$query = "SELECT VERSION() as version;";

// Select using Laravel
$version = $db::select($db::raw("SELECT VERSION() as version;"));
printf('DB version (Laravel Query Builder): %s ' . PHP_EOL, $version[0]->version);

$sql = "SELECT id, date, project, duration FROM mytable order by date desc";
$result = $mysqli->query($sql);
$last_date = null;
$subtotal = 0;
$total = 0;
if ($result->num_rows > 0) {
    printf("Date                Project   Duration\n");
  while($row = $result->fetch_assoc()) {
      if ($last_date == null){
         $last_date = $row["date"];
      }
      
    if( $last_date != $row["date"] )
    {
        printf("------------------------------------- \n");
        printf("%s Total Hours  %d Hours \n", $last_date, $subtotal);
        printf("------------------------------------- \n");
        $last_date = $row["date"];
        $subtotal = 0;
    }     
      
    printf( "%s %s    %d Hours \n",
                 $row["date"],
                 $row["project"],
                 $row["duration"]
          );
    $subtotal += $row["duration"];
    $total += $row["duration"];
  }
        printf("------------------------------------- \n");
        printf("%s Total Hours  %d Hours \n", $last_date, $subtotal);
        printf("                    Total Hours %d Hours \n", $total);
        printf("------------------------------------- \n"); 
    
} else {
  echo "0 results";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多