2015-02-06 73 views
-1

表結構:選擇一個狀態

id 
time (unixtimestamp) 
tag (start,stop,fail,qs etc.) 
text 
job (unique number which identifies the running order) 

我已經存儲像startstopfailqs等一些機器狀態的數據庫。

我的問題是,我想列出每個狀態分隔的所有數據,如:select * from database where status='qs'

它工作正常,但下一步將檢查下一個狀態。這是我卡住的地方。

如果我得到下一個狀態,我想減去時間來獲得流逝的時間。

+0

是否有爲您的狀態定義的順序?像start = 1,stop = 2 usw.? – Hockenberry 2015-02-06 20:32:03

回答

0

,最好的方法是創建一個單獨的表狀態:

Table Statuses: 
id - auto increment Pk 
status_name - string 
sort_order - int 

這樣,你可以把狀態以獨立他們的名字。

在您的主表中,不是將標記字段設置爲狀態字符串,而是創建一個名爲status_id的指向status.id(外鍵)的列。

從那裏你可以加入到狀態表和ORDER BY status.sort_order。

一旦這樣的地方,獲取狀態之間流逝的時間會容易得多,但我會把它留給你或其他人。

+0

謝謝你的擡頭。 – 2015-02-07 12:47:15