在我開始編碼之前,我想首先想出一個好的設計。基本上,我有一個充滿日期的數據庫表,以及與這些日期相關聯的用戶(日期是sql格式)。用於平日/週末計數的MySQL/PHP算法(每月)
使用PHP我想爲每個用戶計算(總共計算)他們有多少個工作日以及它們與多少個週末相關聯。我需要每個月的總數以及總數。這需要從八月到五月「運行」。
我知道,我能確定一天是否是週末或平日:
$date = '2007/08/30';
$weekday = date('l', strtotime($date));
爲了確定一個月,我可以使用SQL,並使用一個case語句,例如,讓「十月「from」10「:
SELECT MONTH(DATE_SPECIFIED);
但是,我最不確定的是什麼過程。我可以很容易地有很多查詢,但效率很低。理想情況下,我正在考慮在html表格中打印結果。
任何人都可以提供任何建議/建議你可能會怎麼做?
謝謝。
編輯:
我有一個用戶表,並且eventcal表。
下面是用戶表:
CREATE TABLE `users` (
`fname` varchar(50) NOT NULL,
`lname` varchar(50) NOT NULL,
`role` varchar(75) NOT NULL,
`region` tinyint(4) unsigned default NULL,
`username` varchar(25) NOT NULL,
`password` varchar(75) NOT NULL,
`new_pass` varchar(5) default NULL,
PRIMARY KEY (`username`),
KEY `role` (`role`),
KEY `region` (`region`),
CONSTRAINT `users_ibfk_2` FOREIGN KEY (`region`) REFERENCES `region` (`region`) ON UPDATE CASCADE,
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`role`) REFERENCES `role` (`role`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
這裏是eventcal表:
CREATE TABLE `eventcal` (
`id` int(11) NOT NULL auto_increment,
`region` tinyint(3) unsigned NOT NULL,
`primary` varchar(25) NOT NULL,
`secondary` tinyint(1) NOT NULL,
`eventDate` date NOT NULL,
PRIMARY KEY (`id`),
KEY `primary_2` (`primary`),
CONSTRAINT `eventcal_ibfk_1` FOREIGN KEY (`primary`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8
注意evencal.primary有一個外鍵引用users.username ...
你可以把數據庫架構嗎?我的答案在下面假設你有一個用戶表,一個日期表和它們之間的鏈接...... – benlumley 2009-07-16 22:32:32
雖然它也可以工作,如果你只有一個用戶和一個user_date表 – benlumley 2009-07-16 22:33:06