2015-02-06 82 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