在水平视图中显示MYSQL查询结果
问题描述:
我们在mysql数据库中有员工考勤系统,但它没有报告功能,我正尝试使用PHP生成报告。在水平视图中显示MYSQL查询结果
让我明确解释一下:
员工每天打卡并打卡。这些打孔输入和输出存储在mysql数据库表(考勤)中。此表包含5个字段,如打卡,打卡,employeeid,备注,attendanceid。我们的员工姓名和其他详细信息存储在其他表(员工)中。
我的查询是我想要在水平视图中使用这两个表生成报表。
例如:
列1:员工姓名 列2:punchin 栏3:样片 column4:punchin 柱:样片
我能够为所有员工每日报告,但希望产生每周/月度报告。
请帮忙。
感谢, 拉吉
答
的报告格式过于含糊。 是否应该是:
- 每行用户一行后跟所有砰砰声和穿孔作为单行(不好)。
或
- 应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对于这种事情。无耻的插件:)
你可能知道你在问什么 - 但我不认为你解释得很好。请提供相关的模式详细信息,示例记录以及您希望如何格式化数据的示例。 – symcbean 2010-10-08 15:08:25