团体季节与工作日约会

时间:2013-02-25 18:40:50

标签: php mysql

我有一个mysql表,用于存储日期范围内的所有日期,用户键入开始日期和结束日期以及价格,我将每天和价格存储为特定季节的行,这是我拥有的唯一信息。此日期范围适用于特定工作日。

我想要做的就是按季节和工作日分组。

示例:
我的日期范围是2013年4月1日至30日,星期一到星期五= 100€ 星期六至星期日2013年4月1日至30日期间80€ 星期一 - 星期五= 200€,1月5日至31日 并且1月5日至31日可以是星期六 - 星期日= 180€

我尝试使用php对此进行分组,但后来却错过了正确的日期

数据库如下所示:

Day         |  Price
2013-04-01  | 100€
2013-04-02  | 100€
2013-04-03  | 100€
2013-04-04  | 100€
2013-04-05  | 100€
2013-04-06  | 80€
2013-04-07  | 80€
2013-04-08  | 100€
2013-04-09  | 100€
2013-04-10  | 100€
...

有没有办法使用PHP将其分组为工作日的季节?

1 个答案:

答案 0 :(得分:0)

你正在尝试分组。您需要获取工作日和组的名称。

方法是找到一个"名称"对于连续值。这个"名称"是工作日或周末价格与当前价格不同的未来日期(如果我理解正确的话)。

完成分组后,只需使用group by即可获得期间的开头和结尾:

select min(day) as startday, max(day) as endday, price
from (select t.*,
             (select day
              from t t2
              where (case when weekday(t2.day) bewteen 0 and 4 then 'Week' else 'Weekend' end) = 
                    t.period and
                    t2.day > t.day and
                   t2.price <> t.price
             ) as grouping
      from (select t.*, (case when weekday(day) bewteen 0 and 4 then 'Week' else 'Weekend' end) as period
            from t
           ) t
     ) t
 group by grouping, price

我还没有测试过这个SQL,因此可能存在语法错误。