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 關注
- 165 瀏覽
添加回答
舉報