我有一个表,其中包含一个进程要执行的任务列表。每个任务只对与输入状态匹配的项目起作用,当任务完成时,它会将项目的状态更改为输出状态。
为了跟踪这些任务,我使用了这样的表格。
CREATE TABLE `tasks` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(80) NOT NULL,
`job_type` varchar(45) NOT NULL,
`input_status` varchar(45) DEFAULT NULL,
`output_status` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
)
任务的状态形成一个事件链。这是一个例子
NULL -> NEW
NEW -> CREATE
CREATE -> INSPECT
INSPECT -> VERIFY
VERIFY -> PUBLISH
在现实生活中,任务列表很长。注意:我不知道不同状态的类型,这些用户定义的值。
当我使用input_status
记录顺序查看表时,会以错误的顺序显示任务。排序input_status
并且output_status
也不起作用(显然)。
如何对首先排序的表进行排序,然后是tonull
的链?input_status
output_status
我认为我必须创建一个虚拟字段来保存额外的排序值,但我不确定它应该是什么或计算出来的。
这是我到目前为止尝试过的,但它不起作用。
SELECT *,
(SELECT input_status FROM tasks AS parent
WHERE parent.output_status = tasks.input_status
) AS sorted
FROM tasks
ORDER BY sorted, input_status;