用SQL证明关系演算

时间:2016-02-28 02:23:23

标签: mysql sql relational-algebra

对于作业,我的任务是为此语句编写关系演算查询,

哪位作者与每位作者共同撰写了至少1篇论文(没有汇总函数)

鉴于此架构,

block=False

我想首先使用sql来证明我的查询,但是我注意到我只得到了共同撰写每篇文章的作者,当我只需要与其他作者共同撰写文章的作者时。我如何更改查询以获得所需的结果?感谢。

这是我提出的查询,

Authors( auId, name)
Authoring( articleId, authorId )

我在下面发布了这个问题的答案。

1 个答案:

答案 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
));