2013-02-25 48 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