【发布时间】:2020-06-02 05:13:02
【问题描述】:
所以我有这个表格方案
|id| item_id | dependency_item_id | completed |
想法是让这个表中的行通过dependency_item_id -> item_id指向同一个表中的其他行。
我想要的是检索所有具有 dependency_item_id 的记录,其值为 NULL 和 completed 的值为 0
与
所有具有父级的记录,即具有item_id = dependency_item_id 的行,状态为completed = 1 及其状态为completed = 0
例子:
These are the records in the database.
|id|task_id|dependency_item_id|completed|
|1 |1 |null |1 |
|2 |2 |null |0 |
|3 |3 |1 |0 |
|4 |4 |2 |0 |
|5 |5 |2 |0 |
With the query we should get only the second record
|id|task_id|dependency_item_id|completed|
|2 |2 |null |0 |
|3 |3 |1 |0 |
此时我的查询如下:
SELECT process.*
FROM tasks AS tasks
JOIN tasks AS dep ON dep.dependency_item_id = process.task_id
WHERE (dep.completed = 1 and tasks.completed = 0) OR tasks.dependency_item_id IS NULL
【问题讨论】:
-
自己加入表。
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
当你得到一个你不期望/不理解的结果时,停止试图找到你的总体目标并找出你的误解是什么。--隔离第一个意外/误解的子表达式及其输入 &输出并了解是什么误解、错字、错误推理等导致了它。 (调试基础。)问这个。