我有三张桌子:
工作
JobId
StartDate
RehireDate
Run Code Online (Sandbox Code Playgroud)
证件
PaperworkId
DocumentName
Run Code Online (Sandbox Code Playgroud)
JobPaperwork
JobId
PaperworkId
Completed
Run Code Online (Sandbox Code Playgroud)
我需要找到没有为其分配具有特定文档名称的文档的任何作业.我不确定如何构造此查询.使用NOT IN不起作用,因为它返回每个作业,因为它正在找到分配给他们的其他文书工作的作业.
这是我开始的:
select j.jobid
from Job j
inner join JobPaperwork jp on j.JobId = jp.JobID
where j.startdate > dateadd(day, -30, getdate())
and j.rehiredate is not null
and jp.PaperworkID not in (select paperworkid
from Paperwork
where documentname like '%searchterm%')
Run Code Online (Sandbox Code Playgroud)
select j.jobid
from Job j
inner join JobPaperwork jp on j.JobId = jp.JobID
where j.startdate > dateadd(day, -30, getdate())
and j.rehiredate is not null
and NOT EXISTS ( select 1
from Paperwork pw
where jp.PaperworkID = pw.paperworkid
and pw.documentname like '%searchterm%'
)
Run Code Online (Sandbox Code Playgroud)