以下是我的表格,
人员(枚举,etitle,ENAME), PK:枚举
有(枚举,ANUM), PK:(枚举,ANUM), FK1:有(枚举) - >人员(枚举), FK2:有(ANUM) - >面积(ANUM)
区(ANUM,aname), PK:ANUM
问题:
专注于每个医疗领域的工作人员(enum,ename,etitle)。
我尝试了以下内容,
我知道这个查询的关系代数表达式是
划分(员工加入Has)(项目区域超过anum)
我的SQL查询如下:
select S.enum
from Staff S
where not exists
(select A.anum from Area A)
minus
(select H.anum
from Has H,Staff S1
where H.enum = S1.enum)
但是没有返回任何行。我确保有一名工作人员专门负责每个领域。
我认为应该做些什么:
必须从所有区域中减去每个工作人员的区域。如果存在具有所有医疗区域的工作人员,则减法将返回空集并且不存在将满足。然后我们必须为特定的工作人员检索枚举,ename,etitle。
注意:
这是我的作业。我非常努力地发帖了。
答案 0 :(得分:0)
select * from Staff
where enum in (
select enum from (
select enum, count(distinct anum) as number_of areas
from Has group by enum
) where number_of areas = (select count(*) from Area)
);