php - 格式化查询结果

标签 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
  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

员工表

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 格式化)应如下所示:

             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

我只是想不出一种方法来像这样格式化它而不每天查询或每天为每个员工添加类次(= 许多空条目,因为并非每个员工都必须每天工作)。 如果有帮助,仍然可以更改表格设置。

最佳答案

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

$shifts[员工姓名][日期]

这是一个示例代码。

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

关于php - 格式化查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43823445/

相关文章:

mysql - 删除具有唯一索引的重复项

sql - 为什么在存储为 View 时,与列名相同的别名会被删除?

php - 使用 JQuery 和 CodeIgniter 将注释安全地写入数据库?

php - 在发送之前格式化文本区域(电子邮件)

php - 如何确保您的 PHP 脚本仅由您授权的应用程序调用?

php - 两个 Eloquent ORM 实例可以操作同一个数据库表吗

php - 显示用户个人资料图片php

php - 在 PHP 中使用 imagemagick 蒙太奇

sql - LEFT JOIN 在 PostgreSQL 中使用链接表

sql - 如何获取SQL Server表中具有最大值的所有记录