我正在处理一个我无法解决的问题。假设,我通过一个简单的 MySQL Select 查询得到结果:
SELECT date_from.rights, date_to.rights FROM rights
表rights
保存描述用户需要访问的系统权限的记录。
权限受时间值的限制,显然是 FROM 和 TO。如果date_from
ordate_to
为 NULL,则权限是无限的(时间方面)。
表权限包含以下数据:
date_from 。. . . . . . . . date_to
2011 年 5 月 20 日。. . . . . . . . 2011 年 8 月 20 日
2011 年 6 月 20 日。. . . . . . . . 空
2011-03-20 。. . . . . . . . 2011-04-20
空... . . . . . . . . . . . 2011-01-20
我真正需要使用 SELECT 查询得到的是:
date_from 。. . . . . . . . date_to
2011 年 5 月 20 日。. . . . . . . . 空
2011-03-20 。. . . . . . . . 2011-04-20
空... . . . . . . . . . . . 2011-01-20
希望你明白我的意思。我只需要对结果进行分组,以便在每个日期值相交的地方获得尽可能广泛的限时权限;)
我认为, GROUP BY 子句应该可以完成这项工作,但我就是找不到正确的公式。如果可能的话,我也想避免使用程序。