Таким образом, у меня есть эта схема таблицы
|id| item_id | dependency_item_id | completed |
Идея состоит в том, чтобы в этой таблице были строки, указывающие на другие строки в той же таблице посредством dependency_item_id -> item_id.
Я хочу получить все записи, которые имеют dependency_item_id
со значением NULL
и completed
со значением 0
AND
Все записи, которые у них есть родитель, строка с именем 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