1 回答

TA贡献1785条经验 获得超8个赞
您应该联接表并对所有员工和一个月中的所有天执行单个查询,而不是为每个员工和日期执行单独的查询。
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_attendancea.AttendanceNULL
- 1 回答
- 0 关注
- 108 浏览
添加回答
举报