2016-01-20 56 views
0

這是我在論壇上的第一篇文章... 我想教自己的MySQL爲我的家庭太陽能項目,但遇到了困難。我每5秒鐘將數據從一臺變頻器記錄到數據庫(這可能會更有時候,即錯過輪詢或惰性忙碌...),但現在我需要知道變頻器在一段時間內處於兩種模式之一的狀態(變頻器可以在一天內多次切換模式)。MySQL的模式總時間

這裏是我的表一小摘錄:

ID  Date_Time   Work_Mode 
----------------------------------------------- 
30039 2016-01-16 04:31 Line Mode 
30041 2016-01-16 04:31 Line Mode 
30042 2016-01-16 04:31 Line Mode 
30044 2016-01-16 04:31 Line Mode 
30046 2016-01-16 04:31 Line Mode 
30048 2016-01-16 04:31 Line Mode 
30050 2016-01-16 04:31 Line Mode 
30052 2016-01-16 04:32 Line Mode 
30053 2016-01-16 04:32 Line Mode 
30055 2016-01-16 04:32 Line Mode 
30057 2016-01-16 04:32 Line Mode 
30059 2016-01-16 04:32 Line Mode 
30061 2016-01-16 04:32 Line Mode 
30063 2016-01-16 04:32 Battery Mode 
30065 2016-01-16 04:32 Battery Mode 
30067 2016-01-16 04:32 Battery Mode 
30069 2016-01-16 04:32 Battery Mode 
30071 2016-01-16 04:32 Battery Mode 
30073 2016-01-16 04:32 Battery Mode 
30075 2016-01-16 04:33 Battery Mode 

我已閱讀噸並一直在努力的最後一個星期,卻無法解決此,任何援助將是最歡迎...

+0

根據這個數據集,期望的結果集是什麼樣的? – Strawberry

+0

@Hanky웃Panky一旦你在兩次模式之間來回切換,這種方法將會失敗。這種輸入不能解決這個問題。 –

+0

我要查找的結果介於Date_Time和Date_Time之間:Battery Mode = X Hours and Line Mode = X Hours –

回答

1

RDBMS'es不能(有效地)做垂直邏輯,就像你在這裏需要的那樣,動態地找到第一個和最後一個連續的一個字段的出現。您的數據模型效率非常低,我建議將其更改爲從/到格式,其中當前模式的字段爲NULL。如果這是不可能的,解決這個問題的唯一現實的方法就是將代碼中的原始數據非規範化,如果需要的話,可以通過中間表向/從表。