我有两张表 employee 和 attendance。
员工:empID,empName
考勤:attendanceID, empID, date, inTime, outTime
我需要在网格中显示这些数据,其中左侧是员工姓名,然后是日期。因此,列标题将类似于 Emp Name, 1,2,3,4.....,30,有或没有数据,需要打印该月的天数。
我想到了三种方法。
按 empID 在加入查询顺序中获取考勤和员工数据。然后循环遍历数据并打印它,如果它与当前日期匹配。这将一直持续到当前循环中的 empID 发生变化。
遍历员工,然后循环一个月中的几天,在每条记录中从数据库中获取特定员工和特定日期的出勤率。
foreach($employees as $emp) { $empID = $emp['empID']; for($day =1; $day<=$maxDaysInTheMonth $day++) { $attendance = getAttendanceFromDatabase($empID,$day); } }
为了提高性能,我们尽量减少数据库连接和不必要的循环。我喜欢实现第二种方式,因为它有最少的条件和循环,而且代码很干净。但它每天都在为每位员工进行数据库检索。请有人指出一些关于性能的事实。
最佳答案
在单个查询中获取记录并循环遍历它更好。因为它必须调用数据库服务器一次。对于第二种方式 - 它必须多次调用数据库服务器,成本更高。
然后根据数据创建关联数组
。索引将是 empID
。
生成数组
后,您可以随意使用它。
关于php - 多个sql语句或循环和条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196430/