1 回答

TA贡献1799条经验 获得超6个赞
您应该加入这些表并对所有员工和一个月中的所有日期进行一次查询,而不是对每个员工和日期进行单独的查询。
SELECT e.EmployeeId, e.EmployeeName, a.Date, a.Attendance
FROM employee_details AS e
JOIN employee_attendance AS a ON a.EmployeeDbKey = e.DbKey
WHERE e.DivisionDbKey = '$DivisionDbKey' and e.Status='ACTIVE'
AND a.Date BETWEEN '$Year-$Month-01' AND LAST_DAY('$Year-$Month-01') and a.Status='ACTIVE'
ORDER BY e.EmployeeName, a.Date
然后,当您显示表格时,<tr>
只要有$row['EmployeeId']
变化就开始一个新的。
此外,当您循环查看员工月份中的日期时,请从当前日期中减去前一个日期。如果差值大于 1,$difference - 1
<td>A</td>
则在行中插入列以显示缺勤情况。
或查看从日期范围生成天数。您可以使用其中一种技术来创建一个子查询,以生成该月中的所有日期。左加入这个employee_attendance
表,你会得到每一天的行,但a.Attendance
如果NULL
他们缺席的话。
- 1 回答
- 0 关注
- 168 浏览
添加回答
举报