2017-04-22 54 views
1

我的数据库具有以下两个表连接两个MySQL表的基础上正确条件

工作:

+----+--------------+ 
| id | name   | 
+----+--------------+ 
| 1 | Mechanic  | 
| 2 | Programmer | 
| 3 | Cleaner  | 
| 4 | Truck driver | 
+----+--------------+ 

资格:

+--------+--------------------+ 
| job_id | qualification  | 
+--------+--------------------+ 
|  1 | drivers_license | 
|  1 | engine_certificate | 
|  2 | mysql_certificate | 
|  4 | drivers_license | 
+--------+--------------------+ 

比方说,我有一个drivers_license和mysql_certificate 。我想创建一个SQL查询,返回所有没有我没有的需求的作业。因此,查询的结果应该是作业id 2,3和4

我曾尝试以下查询:

select * 
    from jobs j 
    join qualifications q 
    on j.id = q.job_id 
where q.qualification = 'drivers_license' || 
q.qualification = 'mysql_certificate'; 

这将返回id为1,2和4,因此显然是行不通的。

这怎么能在SQL中实现?任何帮助是极大的赞赏。

回答

1

您可以使用group byhaving

select j.name, j.id 
from jobs j join 
    qualifications q 
    on j.id = q.job_id 
group by j.name, j.id 
having sum(q.qualification not in ('drivers_license' , 'mysql_certificate')) = 0;