这个问题来自于基础数据库系统第6版(Elmasri,Navathe)第5章查询3b。作者回答这个问题的一种方法是使用存在量词:
SELECT Lname, Fname
FROM EMPLOYEE
WHERE NOT EXISTS ( SELECT *
FROM WORKS_ON B
WHERE ( B.Pno IN ( SELECT Pnumber
FROM PROJECT
WHERE Dnum=5 )
AND
NOT EXISTS ( SELECT *
FROM WORKS_ON C
WHERE C.Essn=Ssn
AND C.Pno=B.Pno )));
作者已将解决方案解释为:
选择每个员工 没有由部门5控制的项目,该员工不在
上工作
我无法理解第二个内部相关子查询如何与其他不相关的子查询和外部查询相关联以给出正确的结果。
任何帮助表示赞赏。
答案 0 :(得分:0)
public class GetMiddleware
{
private RequestDelegate _next;
public GetMiddleware(RequestDelegate next)
{
_next = next;
}
public Task Invoke(HttpContext context)
{
if (context.Request.Path == "/whatever")
{
context.Response.Headers.Add("Location", "https://example.com");
context.Response.StatusCode = 302;
return Task.CompletedTask;
}
return _next.Invoke(context);
}
}
请注意,除了在mysql中不起作用
答案 1 :(得分:0)
SELECT FNAME, LNAME
FROM EMPLOYEE
WHERE NOT EXISTS
(( SELECT PNUMBER
FROM PROJECT
WHERE DNUM = 5)
EXCEPT
( SELECT PNO
FROM WORKS ON
WHERE ESSN = SSN));
答案 2 :(得分:-1)
SELECT FNAME,LNAME
FROM EMPLOYEE
WHERE EXISTS ( SELECT *
FROM DEPENDENT
WHERE SSN=ESSN)
AND EXISTS
( SELECT *
FROM DEPARTMENT
WHERE SSN=MGR_SSN);