2013-02-25 45 views
0

我有一个MySQL表,存储所有天从一个日期范围,用户键入一个开始和结束日期和价格,我存储每一天和价格作为该特定季节的行,这就是我拥有的唯一信息。此日期范围可适用于特定的工作日。团体季节日期与平日

我想要做的是抓季节和平日的所有日子和小组。

实施例:
我有1〜30/2013年4月的日期范围周一至周五= 100€
和1〜30 2013年4月为星期六至星期日80€
和5月1日至5月31日为周一 - 周五= 200€
和5月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

您应该向我们展示所需输出的示例以及为了实现该输出而尝试运行的代码/查询(实际结果与想要的结果)。 – alfasin 2013-02-25 18:45:31

回答

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,所以有可能是语法错误。

+0

谢谢我试过查询,但没有设法正常运行,这是不可能的PHP? – user1361389 2013-02-25 22:03:56