作者jscorpio1 (我 天蠍)
看板PHP
標題[請益] 顯示排班表
時間Sun Jun 15 10:22:22 2014
排班表依日期只顯示星期一到日
分成早上、下午、晚上、大夜(6小時一班)
門口有東、西、南、北
大概如下
星期一(6/16) 星期二(6/17) 星期三(6/18) 星期四(6/19) 星期五(6/20) ....
東門:AAA
早 西門:BBB
上 南門:CCC
北門:DDD
下
午
晚
上
大
夜
我現在的做法是
以迴圈方式顯示架構,在每一個<td></td>之間,以日期及班表時間為條件進行SELECT
每檢視一次班表,就要對資料庫進行28次(4班*7天)的query
因為接下來有可能要改成2小時一班
這樣的話,query次數就會變成84次(12班*7天)
使用者只要按一次refresh,就要84次的query
覺得這樣的次數有點多,但想了很久,也沒有想到比較好的解決方式
想請問大家,有沒有其他比較好的做法呢?
還是說84次,對資料庫而言,是一塊小蛋糕??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.109.162
※ 文章網址: http://webptt.com/m.aspx?n=bbs/PHP/M.1402798945.A.F7A.html
1F:→ up9cloud:84很少,除非你是弄84*connection那就有點多 06/15 11:16
2F:→ MOONRAKER:搞到84次也太誇張,活用group by可以減少次數 06/15 11:23
3F:→ jscorpio1:是只有1個connection。可以請moon大說詳細一點嗎? 06/15 13:38
4F:推 chenstin:你可以一次查出來放陣列去對照,就不用一個日期一個班別 06/15 18:17
5F:→ chenstin:這樣跑sql 06/15 18:17
6F:→ MOONRAKER:自己講得模模糊糊要詳細,你table交出來先 06/15 19:45
7F:推 jhunkyoiori:MOON大跟chen大的方法都可以減少SELECT的次數 06/15 20:59
8F:推 j87b0003:有考慮過用json的存法嗎? 一天只要一筆,不過查詢就麻煩 06/15 21:48
9F:→ dlikeayu:二維array存全部人的班表,要不肥就只存一天 06/15 23:28
10F:→ dlikeayu:最後serialize進db 真要快就用no-sql來處理資料 06/15 23:30
11F:→ jscorpio1:MOON大,不好意思,我不是很清楚你的意思,我以為文中的 06/16 00:45
12F:→ jscorpio1:班表已經提供足夠的資訊了,請問我還需要提供些什麼? 06/16 00:46
//程式示意碼如下
<table>
<?php
日期 for loop{ //$i
工作時間 for loop{ //$j
1.display 日期及星期
2.sql query
SELECT location, worker FROM duty WHERE workdate='$i'AND worktime='$j';
3.echo query result
}
}
?>
//table scheme
workno, workdate, worktime, location, worker
※ 編輯: jscorpio1 (59.126.61.44), 06/16/2014 00:58:23
13F:→ jscorpio1:感謝chen大,我會試看看array的方式。 06/16 00:59
14F:推 crossdunk:他是需要你提供資料表吧@@ 不然怎麼知道你是怎麼存在裡 06/16 09:14
15F:→ MOONRAKER:阿你workdate, worktime, location一起GROUP BY不就結了 06/16 12:45
16F:推 alog:page cache 06/16 14:38