2010-11-04 75 views
0

我在MySQL数据库中有一个表jobs; - 每个作业都属于一个用户(在users中注册) - 每个作业都有要执行的日期和时间。MySQL/PHP多个日期和时间

当前,日期和时间被存储在UNIX时间戳的序列化数组中(供PHP使用)。但是当试图检索时,这不是最优的,因为PHP必须首先遍历属于用户123的每个作业,反序列化数组并查看包含的明天是否为时间戳。

创建一个表dates4jobs会保留原子性,但仍然不是最佳的,因为我必须查询“用户123”的“所有作业”,然后查找所有“日期”和相应的用户123的作业指针和blablabla ...

nao? ^^

回答

0

只是一个建议:使用jobs表中的时间列而不是序列化(或两者)。如果要存储多个时间戳,最好使用参考jobs.id和每个日期的datejoblookup表进行建议。我会阻止手动迭代PHP中的数据。然后,你可以用一个选择运行查询“工作为明天的用户123”:

SELECT job.* FROM `jobs` job, `users` user, `datejoblookup` date 
WHERE date.jobid = job.id   --make sure the date belongs to this job 
AND job.userid = user.id    --make sure the job belongs to the right user 
AND user.name = '123'    --select the user with name '123' 
AND DATE(date.timestamp) = CURDATE() --select jobs for today 

想想也扩展性,你可能需要在未来运行的查询。这种设计将使像“从date1到date2的作业”这样的查询成为可能。

相关问题