如何在多个表中选择数据并按日查看?

时间:2019-04-03 10:29:47

标签: php mysql select multi-table

我开发了一个员工午休时间追踪器,员工必须在午休时间前后打卡入场。我以分钟为单位计算了总休息时间,并将其保存在数据库中。我向人力资源部门提供了所有休息时间的报告。对我来说,具有挑战性的部分是提供一个报告,其中夜班员工第二天午餐休息时间应该在前一天出现。我所做的是,我每天创建一个8个字符的代码,该代码将为每个员工保存。

我需要提供的是摘要报告,其中将显示员工,其余列是该月的日子。

我现在有两个桌子。

!for_each_local .if ($spat ("@#Local","this") == 1) { .foreach /pS 1 /ps 4 (Token { dv /t this }) { as /c myClass .echo ${Token} } }
Table CODE:

ID   | CODE     | DATE_CREATED |
1    | 9VIHQIHE | 2019-03-30   |
2    | 6JFGGU9P | 2019-03-31   | 
3    | UYVEWVN0 | 2019-04-01   |

现在,我需要一份报告,该报告将给我每个月每个雇员的总休息时间的摘要。

当我的搜索参数为2019年3月时,报告应如下所示。

Table BREAKTIME:
ID   | EMPLOYEE   | CODE     | TOTAL_BREAKTIME 
1    | JOHN       | 9VIHQIHE | 00:59:01 
2    | RYAN       | 9VIHQIHE | 01:01:20
3    | JOHN       | 6JFGGU9P | 01:15:08
4    | RYAN       | 6JFGGU9P | 00:58:12
5    | JOHN       | UYVEWVN0 | 00:57:32
6    | RYAN       | UYVEWVN0 | 01:05:16

我没有编写任何代码,因为我不知道从哪里开始。

请,我需要你们的大力帮助。

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用一个function gooseFilter(array) { 来完成此操作:

JOIN

将为您提供类似的数据集

SELECT 
    DATE_FORMAT(c.date_created, '%d') AS date,
    b.employee,
    b.total_breaktime
FROM
    code c
    JOIN breaktime b ON b.code = c.code
WHERE
    DATE_FORMAT(date_created, '%Y-%m') = '2019-03'
ORDER BY employee , date_created;

然后您可以首先遍历此数据并将其重组为以30 JOHN 00:59:01 31 JOHN 01:15:08 30 RYAN 01:01:20 31 RYAN 00:58:12 为键的2D数组,以便每个“雇员”可以在最终输出中成为自己的行:

employee

导致:

while($b = $result->fetch_assoc()){
    $employee = $b["employee"];
    $date = $b["date"];
    $time = $b["total_breaktime"];

    $BreakTime[$employee][$date] = $time;
}

然后,您最终可以遍历该数据以将其输出到页面。

$BreakTime = array(
    'JOHN' => array(
        '30' => '00:59:01',
        '31' => '01:15:08',
    ),
    'RYAN' => array(
        '30' => '01:01:20',
        '31' => '00:58:12',
    );
);

答案 1 :(得分:0)

更新:

下面的代码;

                    while($employees_breaktime = $result->fetch_assoc()){
                      $BreakTime[$employees_breaktime["employee"]] = $employees_breaktime;
                }




                foreach($BreakTime as $key => $val) {


                echo "<tr><td>" .$key. "</td>";

                for($d = 1; $d <= 31; $d++){
                    echo "<td>";
                    $BreakTime[$key][$d];   //LINE 207
                    echo "</td>";
                }
                    echo "</tr>";

给出此错误:

注意:未定义的偏移量:第207行的E:\ xampp \ htdocs \ ett \ summary.php中的1

是什么意思?