ฉันกำลังมองหาวิธีแก้ปัญหาที่มีประสิทธิภาพที่สุดสำหรับปัญหาที่ฉันพบอยู่ ฉันกำลังออกแบบปฏิทินกะสำหรับพนักงานของเรา นี่คือตารางที่ฉันทำงานด้วย:
CREATE TABLE IF NOT EXISTS `Shift` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`accountId` smallint(6) unsigned NOT NULL,
`grpId` smallint(6) unsigned NOT NULL,
`locationId` smallint(6) unsigned NOT NULL,
`unitId` smallint(6) unsigned NOT NULL,
`shiftTypeId` smallint(6) unsigned NOT NULL,
`startDate` date NOT NULL,
`endDate` date NOT NULL,
`needFlt` bit(1) NOT NULL DEFAULT b'1',
`needBillet` bit(1) NOT NULL DEFAULT b'1',
`fltArr` varchar(10) NOT NULL,
`fltDep` varchar(10) NOT NULL,
`fltArrMade` bit(1) NOT NULL DEFAULT b'0',
`fltDepMade` bit(1) NOT NULL DEFAULT b'0',
`billetArrMade` bit(1) NOT NULL DEFAULT b'0',
`billetDepMade` bit(1) NOT NULL DEFAULT b'0',
`FacilityId` smallint(6) unsigned NOT NULL,
`FacilityWingId` mediumint(9) unsigned NOT NULL,
`FacilityRoomId` int(11) unsigned NOT NULL,
`comment` varchar(255) NOT NULL,
`creation` datetime NOT NULL,
`lastUpdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`lastUpdateBy` mediumint(9) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ตอนนี้มาถึงปัญหา - ฉันต้องการให้แสดงบนปฏิทิน (ในสีอื่น) ว่าได้รับแผ่นเวลาสำหรับบางวันหรือไม่
ความคิดแรกของฉันคือสร้างตารางแยกกันและแสดงรายการแยกตามวันสำหรับพนักงานแต่ละคน T/F แต่ปริมาณข้อมูลที่ส่งคืนจากการสืบค้นแยกต่างหากสำหรับพนักงานแต่ละคนตลอดทั้งเดือนจะต้องมีจำนวนมากและไม่มีประสิทธิภาพอย่างแน่นอน
ความคิดที่สองคือการใส่ข้อมูลลงในตาราง Shift นี้โดยมีตัวคั่น - จากนั้นจึงระเบิดด้วย PHP ความคิดไร้สาระ... แต่ฉันเดาว่านั่นคือเหตุผลที่ฉันมาที่นี่ มีความคิดอะไรบ้าง?
ขอบคุณสำหรับความช่วยเหลือของคุณ!