2017-05-06 69 views
2

我有(工作)進入這樣的表:格式的查詢結果

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 

我只是不能想辦法對其進行格式化像這樣沒有查詢每一天或添加轉變爲每位員工每(因爲不是每個員工都必須每天工作,所以許多空的條目)。 如果有幫助,仍然可以更改表格設置。

+0

你已經採取MySQL儘可能;用PHP來完成剩下的工作。 –

回答

1

您可以將其存儲在2 dimensional array

$shifts[employeename][date]

這裏是一個這樣的例子代碼。

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