在水平视图中显示MYSQL查询结果

问题描述:

我们在mysql数据库中有员工考勤系统,但它没有报告功能,我正尝试使用PHP生成报告。在水平视图中显示MYSQL查询结果

让我明确解释一下:

员工每天打卡并打卡。这些打孔输入和输出存储在mysql数据库表(考勤)中。此表包含5个字段,如打卡,打卡,employeeid,备注,attendanceid。我们的员工姓名和其他详细信息存储在其他表(员工)中。

我的查询是我想要在水平视图中使用这两个表生成报表。

例如:

列1:员工姓名 列2:punchin 栏3:样片 column4:punchin 柱:样片

我能够为所有员工每日报告,但希望产生每周/月度报告。

请帮忙。

感谢, 拉吉

+0

你可能知道你在问什么 - 但我不认为你解释得很好。请提供相关的模式详细信息,示例记录以及您希望如何格式化数据的示例。 – symcbean 2010-10-08 15:08:25

的报告格式过于含糊。 是否应该是:

  • 每行用户一行后跟所有砰砰声和穿孔作为单行(不好)。

  • 应punchins /超时被汇总,给出一个总计在此期间每个用户的工作时间?

这听起来像你试图做一个数据透视查询(切换行和列)。 MySQL不支持这一点,但它可以被模拟。然而,只需获取需要的数据并用php解析它就容易多了。

这听起来像(这只是一个猜测),您希望员工成为第一列,并且所有打孔输入/输出都与该员工位于同一行。

这里有一个裂缝,在你想要做什么:

$data = select_all_relevant_data_with_mysql(); 
$employees = array(); 
while ($row = $data->fetch()) { 
    $employees[$row['employee']][] = array(
     'in' => $row['punchin'] 
     , 'out' => $row['punchout'] 
    ); 
} 

(请注意,这将产生对每个员工进入未定义指数告示你应该处理这个问题,但它会在代码中有一倍)。

现在,您已经为每位员工安排了冲突/出数据(希望按顺序,MySQL可以使用ORDER BY轻松处理)。

现在你做一些链接:

foreach ($employees as $name => $punches) { 
    echo <<<HTML 
     <tr><td>$name</td> 
HTML; 
    foreach ($punches as $punch) { 
     echo <<<HTML 
     <td>$punch[in]</td><td>$punch[out]</td> 
HTML; 
    } 
    echo '</tr>'; 
} 

我会建议使用模板系统,如PHPTAL对于这种事情。无耻的插件:)