首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以水平视图显示MYSQL查询结果

以水平视图显示MYSQL查询结果
EN

Stack Overflow用户
提问于 2010-10-08 18:36:48
回答 2查看 1.8K关注 0票数 1

我们在mysql数据库中有员工考勤系统,但它没有报告功能,我正在尝试使用PHP生成报告。

让我解释清楚:

这些打卡进出存储在mysql数据库表(考勤)中。此表包含5个字段,如punch、punchout、employeeid、note、attendanceid。我们的员工姓名和其他详细信息存储在其他表( employee)中。

我的问题是,我希望在水平视图中使用这两个表生成一个报告。

示例:

column1 :员工姓名column2 : punchout column3 : punchout column4 :punchout列:punchout

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

请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2010-10-09 10:32:31

这听起来像是你在尝试做一个透视查询(切换行和列)。MySQL不支持此功能,但可以对其进行模拟。然而,只获取所需的数据并使用php进行解析要容易得多。

听起来(这只是一种猜测),您希望员工位于第一列,并且该员工的所有打卡输入/输出都在同一行中。

下面是你想要做的事情:

代码语言:javascript
复制
$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轻松地处理)。

现在你要做一些link的事情:

代码语言:javascript
复制
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这样的模板系统来处理这类事情。不知羞耻的插头:)

票数 1
EN

Stack Overflow用户

发布于 2010-10-08 19:26:27

报告格式太模糊了。应该是:

  • 每个用户一行,后面是所有打卡机和打卡机作为一行(不太好)。

  • 是否应该对打卡/出卡进行汇总,以提供该时段内每个用户的总计工作时间?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3889713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档