亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用php從具有多個表的mysql數據庫中檢索大量數據

如何使用php從具有多個表的mysql數據庫中檢索大量數據

PHP
偶然的你 2022-08-19 10:25:45
我需要特定部門的每月出勤報告。在我的過程中,它將需要更多的時間來生成。如果員工人數超過50人,則根本不會生成報告。我有兩個表,一個是員工表,另一個是出勤表。我正在生成這樣的報告。這是我的代碼。<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            //Getting all employee details according roster assign table.            $sqlRA = "SELECT * from employee_details where DivisionDbKey = '$DivisionDbKey' and Status='ACTIVE' ORDER BY EmployeeName ASC";            $resultRA = mysqli_query($conn, $sqlRA);            $i = 1;請指導我該怎么做,以便我能夠快速獲得更多的員工數據。我必須一次展示1000名員工的記錄。
查看完整描述

1 回答

?
慕的地10843

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


查看完整回答
反對 回復 2022-08-19
  • 1 回答
  • 0 關注
  • 107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號