对于作业,我的任务是为此语句编写关系演算查询,
哪位作者与每位作者共同撰写了至少1篇论文(没有汇总函数)
鉴于此架构,
block=False
我想首先使用sql来证明我的查询,但是我注意到我只得到了共同撰写每篇文章的作者,当我只需要与其他作者共同撰写文章的作者时。我如何更改查询以获得所需的结果?感谢。
这是我提出的查询,
Authors( auId, name)
Authoring( articleId, authorId )
我在下面发布了这个问题的答案。
答案 0 :(得分:1)
SQL Query查找与其他作者共同撰写至少一篇文章的所有作者。
select *
from `authors` as a1
where not exists(
select *
from `authors` as a2
where a2.auid <> a1.auid
and not exists(
select *
from authoring as ar1
inner join authoring as ar2
on ar1.articleid = ar2.articleid
where ar1.authorid = a1.auid
and ar2.authorid = a2.auid
));