mysql - 检查上一步状态是否完成并显示下一步是否完成

标签 mysql sql select

我们有不同的流程,例如设计、 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/

相关文章:

mysql - 仍未解决 : how to calculate price change (using prices from DIFFERENT dates) in MySQL?

mysql - 按小时或按天对记录进行分组,并在 mysql 中用零或空值填充空白

php - CodeIgniter 更新数据库

mysql - SQL SUM 具有活跃 child 的 parent 数量

php - 选择并获取 mysql 上重复次数最多的事件

mysql - 以一种棘手的方式连接 MySQL 表

Jquery 在单击标题时选择取消选中复选框

选择中的mysql变量

mysql - 将日期和时间格式化为 MySQL 默认格式

mysql SELECT IF 语句与 OR