Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Sql 根据另一个表的值显示结果_Sql - Fatal编程技术网

Sql 根据另一个表的值显示结果

Sql 根据另一个表的值显示结果,sql,Sql,这一直在踢我的屁股 所以我有一份工作: id | date | time 1 | 02-10-2015 | 8:00 2 | 02-11-2015 | 8:00 3 | 02-12-2015 | 8:00 4 | 02-13-2015 | 8:00 然后,用户: id | name 1 | John 2 | Mary 3 | Darius 最后,一个多对多用户的任务 id | user_id | job_id | status 1 | 1 | 1

这一直在踢我的屁股

所以我有一份工作:

id | date       | time
1  | 02-10-2015 | 8:00
2  | 02-11-2015 | 8:00
3  | 02-12-2015 | 8:00
4  | 02-13-2015 | 8:00
然后,用户:

id | name
1  | John
2  | Mary
3  | Darius
最后,一个多对多用户的任务

id | user_id | job_id | status
1  |   1     |   1    | canceled
2  |   2     |   1    | active
3  |   3     |   3    | active
4  |   2     |   4    | canceled
我正在尝试运行一个查询,当没有分配其他人员时,它将仅返回取消的

因此,在上述数据的情况下,它将只返回作业4,因为作业1已分配了活动人员

SELECT 
      user_job.user_id,
      job.id as job_id, 
      user_job.status
FROM job inner JOIN user_job ON (job.id = user_job.job_id )
WHERE homekeeper_jobs.state != 'active' 
正在返回:

user_id | job_id | status
  1     |   1    | canceled
  2     |   4    | canceled
由于作业1确实有另一个用户被指定为“活动”状态,因此我不想显示该用户


非常感谢。

使用
不存在
操作符过滤
活动
记录。试试这个

SELECT *
FROM   user_job u
       JOIN (SELECT j.id AS job_id
             FROM   job j
             WHERE  NOT EXISTS (SELECT 1
                                FROM   user_job uj
                                WHERE  j.id = uj.job_id
                                       AND uj.status = 'active')) a
         ON a.job_id = u.job_id 
使用子查询

SELECT * FROM user_job 
WHERE status = 'canceled' AND job_id NOT IN 
(SELECT job_id FROM user_job WHERE status='active')