gpt4 book ai didi

mysql - 在查询中需要帮助来检查其他用户是否完成了任务

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:22 25 4
gpt4 key购买 nike

我在数据库 Task、User 和 assignedTo 中有 3 个表。

Task 包含 Admin 创建的 Task 的信息,User 是 User 的列表,assignedTo 包含关于哪个任务分配给哪个用户的信息。

我需要查询“assignedTo”表以在其仪表板上显示分配给用户的任务列表。问题是单个任务被分配给多个用户,并且任务可能由其中一个完成。所以我需要显示处于打开状态并且分配列表中的任何人都没有完成的任务。以下是“assignedTo”表的结构:

--------------------------------
| id | taskId | userId | status|
--------------------------------
| 1 | 1 | 1 | open |
| 2 | 1 | 2 | open |
| 3 | 1 | 3 | open |
| 4 | 1 | 4 | open |
| 5 | 2 | 1 | open |
| 6 | 2 | 2 | close |
| 7 | 3 | 1 | open |
| 8 | 3 | 2 | open |
--------------------------------

因此根据以上数据,任务 1 显示在用户 1、2、3 和 4 仪表板上,因为它没有被任何人关闭。任务 2 没有显示在任何人的 Dash 上,因为它已被用户 2 关闭。同样,任务 3 显示在用户 1 和 2 Dash 上,因为它对他们都开放。

我试图将同一个表连接到它自己的表但未能执行。

SELECT * FROM assignedTo as a1
JOIN assignedTo as a2 ON a2.taskId = a1.taskId AND a2.userId != 1 AND a2.status == 'open'
WHERE a1.userId = 1 AND a1.status = 'open'

如果可能请帮忙查询

最佳答案

您可以使用 not in 和 subselect

select * 
from assignedTo
where taskid not in (select distinct taskid
from assignedTo
where status = 'close');

关于mysql - 在查询中需要帮助来检查其他用户是否完成了任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37915820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com