Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 格式化查询结果_Php_Mysql_Sql - Fatal编程技术网

Php 格式化查询结果

Php 格式化查询结果,php,mysql,sql,Php,Mysql,Sql,我有一张这样的(工作)轮班表: shifts s_id e_id start end date 1 1 06:00:00 08:00:00 2017-05-04 2 1 09:00:00 13:00:00 2017-05-02 3 1 06:20:00 15:00:00 2017-05-03 4 2 02:00:00 05:15:00 2017-05-02

我有一张这样的(工作)轮班表:

shifts
s_id   e_id    start      end        date
  1      1   06:00:00   08:00:00   2017-05-04
  2      1   09:00:00   13:00:00   2017-05-02
  3      1   06:20:00   15:00:00   2017-05-03
  4      2   02:00:00   05:15:00   2017-05-02
  5      2   12:00:00   13:00:00   2017-05-05
  7      1   08:00:00   17:00:00   2017-05-01
  8      1   08:00:00   17:00:00   2017-05-05
  9      1   08:00:00   17:00:00   2017-05-06
 10      1   08:00:00   17:00:00   2017-05-07
 11      1   08:00:00   17:00:00   2017-04-30
             2017-05-01        2017-05-02
Employee 1  08:00 - 17:00     09:00 - 13:00
Employee 2     NULL           02:00 - 05:15
Employee 3     NULL              NULL
Employee 5     NULL              NULL
Employee 6     NULL              NULL
员工桌

employees
id    name
1   Employee 1
2   Employee 2
3   Employee 3
5   Employee 4
6   Employee 5
带着疑问

select    employees.id as 'emp_id', 
          employees.name, 
          shifts.date, 
          shifts.start, 
          shifts.end 
from      employees 
left join shifts 
on        ((employees.id = shifts.e_id) 
and        (shifts.date between '2017-05-01' and '2017-05-02'))
order by  employees.id, shifts.date
我的结果如下:

emp_id   name        date     start     end
   1   Employee 1 2017-05-01 08:00:00 17:00:00
   1   Employee 1 2017-05-02 09:00:00 13:00:00
   2   Employee 2 2017-05-02 02:00:00 05:15:00
   3   Employee 3    NULL      NULL    NULL
   5   Employee 4    NULL      NULL    NULL
   6   Employee 5    NULL      NULL    NULL
所需的最终结果(用php格式化)应如下所示:

shifts
s_id   e_id    start      end        date
  1      1   06:00:00   08:00:00   2017-05-04
  2      1   09:00:00   13:00:00   2017-05-02
  3      1   06:20:00   15:00:00   2017-05-03
  4      2   02:00:00   05:15:00   2017-05-02
  5      2   12:00:00   13:00:00   2017-05-05
  7      1   08:00:00   17:00:00   2017-05-01
  8      1   08:00:00   17:00:00   2017-05-05
  9      1   08:00:00   17:00:00   2017-05-06
 10      1   08:00:00   17:00:00   2017-05-07
 11      1   08:00:00   17:00:00   2017-04-30
             2017-05-01        2017-05-02
Employee 1  08:00 - 17:00     09:00 - 13:00
Employee 2     NULL           02:00 - 05:15
Employee 3     NULL              NULL
Employee 5     NULL              NULL
Employee 6     NULL              NULL
我只是想不出一种方式来格式化它,而不查询每一天或每天为每个员工添加一个班次(=许多空条目,因为不是每个员工都必须每天工作)。
如果有帮助,仍然可以更改表格设置。

您可以将其存储在
二维数组中

$shift[employeename][date]

下面是一个示例代码

foreach($rows as $row)
{
    $shifts[$row['name']][$row['date']] = $row['start'] . ' ' . $row['end'];
}

您已经尽可能地采用了MySQL;用PHP完成其余的工作。