表格结构:
id
time (unixtimestamp)
tag (start,stop,fail,qs etc.)
text
job (unique number which identifies the running order)
我有一个存储某些机器状态的数据库,例如start
,stop
,fail
,qs
等等。
我的问题是,我希望列出按每个状态分隔的所有数据,例如:select * from database where status='qs'
。
它工作正常,但下一步将是检查下一个状态是什么。这就是我被困住的地方。
如果我获得下一个状态,我想减去时间以获得经过的时间。
答案 0 :(得分:0)
最好的方法是为状态创建一个单独的表:
Table Statuses:
id - auto increment Pk
status_name - string
sort_order - int
通过这种方式,您可以将状态按顺序排列,与其名称无关。
在主表中,不是将标记字段作为状态字符串,而是创建一个名为status_id的列,该列指向status.id(外键)。
从那里你可以加入状态表和ORDER BY status.sort_order。
一旦确定了这一点,获得状态之间的经过时间将会更容易,但我会将此留给您或其他人。