如何使用php从具有多个表的mysql数据库中检索大量数据

我需要特定部门的每月出勤报告。在我的程序中,生成需要更多时间。如果超过 50 名员工,则根本不会生成报告。

我有两张表,一张是员工表,另一张是出勤表。

http://img4.mukewang.com/62e3a0ae0001504903050456.jpg

http://img3.mukewang.com/62e3a0b90001b0de03630444.jpg

我正在生成这样的报告。

http://img3.mukewang.com/62e3a0c400012c3013210284.jpg

这是我的代码。


<div class="row">

    <div class="col-md-12">   

        <table style="width:100%;" border="1">                                

            <tr style="font-weight: bold; background-color: #D3D3D3; text-align: center;">

                <td style="text-align: center;padding: 5px;">

SLNo.

                </td>   

                <td>EMPID</td>

                <td style="width:250px; text-align: center; padding-left: 5px; padding-right: 5px;">

                    Employee&nbsp;Name

                </td>


                <?php

                /* Default Date Indexing starts here. */

                $timezone = "Asia/Calcutta";

                date_default_timezone_set($timezone);

                $timestamp = mktime(0,0,0,$Month,1,$Year);

                $maxday = date("t",$timestamp);


                //echo "<td></td>";

                for ($k=1; $k<= $maxday; $k++) {  

                    $kv = sprintf('%02d', $k);

                    echo "<td style=''>$kv</td>";  

                }


                /* Default Date Indexing ends here. */

                ?>

                <td>TOT.P</td>

                <td>TOT.HLF</td>

                <td>TOT.A</td>

                <td>TOT.WO</td>

                <td>TOT.HLD</td>

            </tr>

            <?php


请指导我该怎么做,以便我能够快速获得更多员工数据。我必须一次显示 1000 名员工的记录。


泛舟湖上清波郎朗
浏览 136回答 1
1回答

哈士奇WWW

您应该加入这些表并对所有员工和一个月中的所有日期进行一次查询,而不是对每个员工和日期进行单独的查询。SELECT e.EmployeeId, e.EmployeeName, a.Date, a.AttendanceFROM employee_details AS eJOIN employee_attendance AS a ON a.EmployeeDbKey = e.DbKeyWHERE 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&nbsp;<td>A</td>则在行中插入列以显示缺勤情况。或查看从日期范围生成天数。您可以使用其中一种技术来创建一个子查询,以生成该月中的所有日期。左加入这个employee_attendance表,你会得到每一天的行,但a.Attendance如果NULL他们缺席的话。
打开App,查看更多内容
随时随地看视频慕课网APP