选择下一个状态

时间:2015-02-06 20:26:34

标签: sql

表格结构:

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'

它工作正常,但下一步将是检查下一个状态是什么。这就是我被困住的地方。

如果我获得下一个状态,我想减去时间以获得经过的时间。

1 个答案:

答案 0 :(得分:0)

最好的方法是为状态创建一个单独的表:

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

通过这种方式,您可以将状态按顺序排列,与其名称无关。

在主表中,不是将标记字段作为状态字符串,而是创建一个名为status_id的列,该列指向status.id(外键)。

从那里你可以加入状态表和ORDER BY status.sort_order。

一旦确定了这一点,获得状态之间的经过时间将会更容易,但我会将此留给您或其他人。