2016-01-03 63 views
0
  • 项目(idProject,nameProject)
  • 运营商(idOperator,nameOperator)
  • Project_Operator(idProject,idOperator,BEGINDATE,结束日期)

我想要的清单运营商,他们从未参与过去7个月的项目EXISTS/NOT在SQL EXISTS

SELECT I.* 
FROM Operator I 
WHERE NOT EXISTS (SELECT * 
        FROM Project_Operator 
        WHERE SYSDATE-begindate < 7 
        AND I.numOperator = numOperator); 

我想知道这是否正确

+0

你的问题是什么? –

+0

我想知道这是否正确 –

+1

它会返回正确的结果吗? –

回答

1

你有几分接近,但日期之间的区别是在天,而不是几个月,而逻辑是倒退:

SELECT I.* 
FROM Operator i 
WHERE NOT EXISTS (SELECT * 
        FROM Project_Operator po 
        WHERE po.begindate > add_months(sysdate, -7) AND 
         I.numOperator = po.numOperator 
       ); 

也就是说,没有项目(“not exists1”)开始于过去七个月(po.begindate > add_months(sysdate, -7))。