MySQL查询以获取未分配日期的非数据

MySQL查询以获取未分配日期的非数据,mysql,datetime,date,calendar,schedule,Mysql,Datetime,Date,Calendar,Schedule,我有一个包含每周数据的表,如下所示: userID Site date ------ ------ ------ Smith Ferris Wheel 2009-07-13 Jones Outerspaceland 2009-07-13 LChar Ferris Wheel 2009-07-14 Smith Underworld 2009-07-16 Jones

我有一个包含每周数据的表,如下所示:

userID       Site             date
------      ------           ------
Smith    Ferris Wheel       2009-07-13
Jones   Outerspaceland      2009-07-13
LChar   Ferris Wheel       2009-07-14
Smith     Underworld        2009-07-16
Jones     Fish Bowl         2009-07-17
Munson    Go-Go Tech        2009-07-16
目前我有一个PHP脚本,它首先获取日期范围(星期一到星期五),然后查询该日期范围的每个用户ID。然后,我循环检查结果并检查日期之间的差距。如果有间隙,它会输出日期,并将站点列为“待在家里”。它必须连续说明几天(例如,如果用户仅在该周的星期一和星期五驻扎),并且必须在每周结束时进行额外的步骤,以确保用户在星期三之后是否待在家里(因此,有周四和周五作为缺口进行填补)。因此,它必须进行三项检查,一项检查针对周一未开始的用户,一项检查针对日与日之间的缺口,另一项检查针对周五之前结束的用户……此外,它还必须针对上述任何情况考虑连续几天

该脚本基本上创建了一个要检查的日期范围数组,并且已经运行了好几个月

我想知道,是否有一个MySQL函数可以为每个用户返回休息日?这样我就可以让它在查询中填写“呆在家里”,而不必运行一个费时费力的脚本,向其他与我一起工作的人解释我的脚本

谢谢!

简单! 翻转查询

即:

  • 使用一周中的几天创建查找表
  • 雕刻一个查询,该查询在查找表和表DAYNAME(字段)上执行左外联接。也就是说,它将返回查找表中的所有行,并且仅返回表中匹配的行、、
  • 我不确定是否要按个人筛选..条件看起来像userid='person'或userid为null

    结果数据将看起来是

  • 连续几天
  • 在该行中,用户标识将在非空天数内存在,在跳过天数内为空

  • 如果我有一个星期一到星期天的表,我可以反复使用它,那么有没有一个日期函数可以根据实际的日期范围将这些工作日反转为实际的日期?我的目标之一是让SQL查询使用concat和诸如此类的工具返回尽可能多(如果不是全部)的html实际值,所以在使用您的想法时k对于查找缺少的日期,如果它返回缺少的工作日作为缺少的日期(包装在html标记中等),这将是理想的。是的,可以同时获得这两个日期。您的表是否只包含一周的数据?在查询中包含一个计算列,该列根据开始日期(您传入的)进行日期计算还有一个选项是在一个有日期的小表上进行并集,并按分组以删除任何重复项。如果按一周的数据计算,您的意思是该表只包含一周的数据,则不会。如果您的意思是,它通常只包含一周的数据的每个查询,但不总是,因此不会再重复。我想我不得不接受Joel的建议我更希望有一个只包含7个值的较轻的表,但似乎要真正得到我想要的一切,而不必使用临时表,我就必须有一个365*20值的表,只包含一年中的每一天。一个日期表就行了。如果你不想维护日期数据,你可以n可能会用一张包含部分日期的表格…等等,或者临时表格…祝你好运