Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在单个查询中获取数据_Mysql - Fatal编程技术网

Mysql 在单个查询中获取数据

Mysql 在单个查询中获取数据,mysql,Mysql,我有3个表存储以下值: Users: user_id email password status Scheduled_Jobs: jobs_id jobs_userid date status Last_Update: update_id update_jobsid status 创建用户时,还将每月创建一个计划作业列表,例如,根据注册日期每月创建一个作业。当用户完成作业时,将更新最后一个_更新表 我目前正在做的是尝试查看有多少用户是最新的,并且没有挂起的作业 我目前正在通过一个循环检查哪

我有3个表存储以下值:

Users:
user_id
email
password
status

Scheduled_Jobs:
jobs_id
jobs_userid
date
status

Last_Update:
update_id
update_jobsid
status
创建用户时,还将每月创建一个计划作业列表,例如,根据注册日期每月创建一个作业。当用户完成作业时,将更新最后一个_更新表

我目前正在做的是尝试查看有多少用户是最新的,并且没有挂起的作业

我目前正在通过一个循环检查哪些用户的状态为1,然后他们的作业状态也为1,日期为最新日期编辑:根据您的评论和示例,我更新了查询以返回没有未完成作业的用户数,如状态为1的计划作业,已经过了最后期限,但仍然没有最后更新


你想要得到的东西可能是重复的?您要获取哪些用户?你能把它解释成一个普通的句子吗?举个例子:我希望这些用户的上一次更新的所有可能状态都标记为1。欢迎使用SO。请参阅:示例数据和预期输出将真正有助于构建正确的查询。我本想准备一把小提琴,但被问题缠住了。“草莓希望现在更好?”?非常感谢。谢谢你的帮助。我不确定我是否理解工作部分。计划的作业已经有了预定的日期,应该满足这些日期。@Laon我更新了答案,我仍然不能确定我是否正确理解日期是最新日期是!我没有看到更新的答案。这很有效。谢谢
Users (user_id | email | password | status)
1 | asd@asd.com  | xxx | 1
2 | asd2@asd.com | xxx | 1
3 | asd3@asd.com | xxx | 2
4 | asd4@asd.com | xxx | 1
5 | asd3@asd.com | xxx | 1

Scheduled_Jobs (job_id | user_id | date | status)
1  | 1 | 05/09/2019 | 1
2  | 1 | 05/10/2019 | 1
3  | 1 | 05/11/2019 | 1
4  | 1 | 05/12/2019 | 1
5  | 2 | 07/10/2019 | 1
6  | 2 | 07/11/2019 | 1
7  | 2 | 07/12/2019 | 1
8  | 3 | 10/10/2019 | 2
9  | 4 | 13/10/2019 | 1
10 | 4 | 13/11/2019 | 1
11 | 5 | 15/10/2019 | 1
12 | 5 | 15/11/2019 | 1
13 | 5 | 15/12/2019 | 1

Last_Update (update_id | job_id | status)
1 | 1  | 1
2 | 2  | 1
3 | 3  | 1
4 | 5  | 1
5 | 8  | 1
6 | 9  | 1
7 | 11 | 1
SELECT count(u.user_id) AS nb_users
FROM Users u
LEFT JOIN (
  SELECT sj.jobs_userid AS unfinished_user
  FROM Scheduled_Jobs sj
  LEFT JOIN Last_Update lu
    ON lu.update_jobsid = sj.jobs_id
  WHERE sj.status = 1
  AND sj.date <= CURDATE()
  AND lu.update_id IS NULL
) AS uj -- unfinished jobs
  ON u.user_id = uj.unfinished_user
WHERE u.status = 1
AND uj.unfinished_user IS NULL