我有两个包含这些列的表(我只是展示了那些列):
tasks table
+----+------+
| id | todo |
+----+------+
| 1 | 0 |
| 2 | 1 |
| 3 | 1 |
| 4 | 0 |
| 5 | 1 |
+----+------+
entries table
+----+---------+---------+------+
| id | task_id | user_id | done |
+----+---------+---------+------+
| 1 | 3 | 1 | 1 |
| 2 | 5 | 2 | 1 |
| 3 | 5 | 1 | 1 |
| 4 | 2 | 1 | 0 |
+----+---------+---------+------+
我查询这些表并且只将tasks
保留在todo = 1
,所以我已经在PHP对象中拥有了数据。
然后我有两个用户可以查看的列表:要执行的任务,已归档(已完成)以及要执行的任务。我可以很好地生成第一个列表,我循环遍历每个任务和条目,如果它们匹配task_id
其中user_id == $loggeduser && done == 1
,并取消设置那些不匹配的索引。但是,我找不到使用我的存档列表执行此操作的逻辑,因为我没有要匹配的条目。如何为用户循环我的任务并仅保留已完成的任务?在这种情况下,对于用户1的存档列表,我只是保留任务ID 3和5,而对于用户2,只保留任务ID 2。
感谢。
答案 0 :(得分:1)
你可以使用普通的SQL做这一切(我想你正在使用一些关系数据库)。
此查询为您提供“待办事项和完成”的所有任务。要完成“待办事项和未完成”的任务,只需将“e.done = 1
”更改为“e.done = 0
”即可。我相信你明白了。
SELECT * FROM tasks t
INNER JOIN entries e ON t.id = e.task_id
AND e.user_id = [logged_user_id]
AND e.done = 1
WHERE
t.todo = 0