我们有不同的流程,例如设计、 sample 、模型、凸版打印、描图、打印。但某项工作可以随机完成任何工作。 我想选择打印过程,但在此之前我想检查前面的过程是否已经完成。
我想检查上一步是否已经完成,如果完成则显示下一步。
状态含义:
1 等于完成
0 等于尚未完成
我使用以下查询,但它不起作用。
SELECT *
FROM process
WHERE status = 0
AND (SELECT * FROM process WHERE step=step-1 AND status=1)
流程表
+-----------+----------+------------+-----------+----------+
| ID | Job Code | Job Name | Step | Status |
+-----------+----------+------------+-----------+----------+
| 1 | J0003 | Designing | 0 | 1 |
| 2 | J0003 | Sample | 1 | 1 |
| 3 | J0003 | Printing | 2 | 0 |
+-----------+----------+------------+-----------+----------+
结果:
+-----------+----------+------------+-----------+----------+
| 3 | J0003 | Printing | 2 | 0 |
+-----------+----------+------------+-----------+----------+
这应该是结果,因为第一步和第二步已经完成。完成,为什么因为行 status
的值为 1。
如果第二个进程Sample的status值为0,则结果为空或显示为空。
最佳答案
如果您使用限定的列名称,我怀疑您的查询会执行您想要的操作:
SELECT p.*
FROM process p
WHERE p.status = 0 AND
EXISTS (SELECT 1 FROM process p2 WHERE p2.step = p.step - 1 AND p2.status = 1);
关于mysql - 检查上一步状态是否完成并显示下一步是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45458247/