-1

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

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 函数可以为每个用户返回休息日?这样我就可以让它在查询中填写“待在家里”,而不必运行一个时髦的脚本,这个脚本需要永远向与我一起处理我的脚本的其他人解释?

谢谢!

4

1 回答 1

0

简单的!翻转查询!

那是:

  1. 创建一个包含星期几的查找表
  2. 雕刻一个在查找表和您的表 DAYNAME(field) 上执行 LEFT_OUTER_JOIN 的查询。也就是说,它将返回查找表中的所有行,并且只返回与您的表匹配的行,,,

我不确定您是否要按人过滤..条件看起来像userid = 'person' 或 userid 为 null

结果数据看起来是......

  1. 一排一整天
  2. 在该行中,用户 ID 将存在于非空白天,并且对于跳过的天数为空
于 2009-07-14T05:00:17.537 回答