php - 多个sql语句或循环和条件

标签 php mysql database loops

我有两张表 employee 和 attendance。

员工:empID,empName

考勤:attendanceID, empID, date, inTime, outTime

我需要在网格中显示这些数据,其中左侧是员工姓名,然后是日期。因此,列标题将类似于 Emp Name, 1,2,3,4.....,30,有或没有数据,需要打印该月的天数。

我想到了三种方法。

  1. 按 empID 在加入查询顺序中获取考勤和员工数据。然后循环遍历数据并打印它,如果它与当前日期匹配。这将一直持续到当前循环中的 empID 发生变化。

  2. 遍历员工,然后循环一个月中的几天,在每条记录中从数据库中获取特定员工和特定日期的出勤率。

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/

相关文章:

php - 我可以在 mysqli 中使用 select * from table 和内连接以及 where 条件吗

C# 数据网格刷新

mysql - Firebase 与 MySQL 数据库(分层/关系)

python - 如何在 Django 模型/数据库中分离语言

php - 在 MYSQL 中读取和写入 PHP 数组

php - Magento 客户登录页面在登录后立即再次加载,并且未创建 Frontedn cookie

php - 如何从一个表中选择与另一表中的差异(总和)?

mysql - 如何使用 GROUP BY 以便按特定列排序?

php - 显示不带逗号的多个值

mysql - 单步执行mysql存储过程