SQL如何编写这些复杂的查询?

时间:2015-05-27 07:28:23

标签: sql oracle

这是我创建的数据库的模式,我已经用大量数据填充了表:

DEPARTMENT(deptnum(P), descrip, instname, deptname, state, postcode)
ACADEMIC(acnum(p), deptnum*, famname, givename, initials, title) //acnum = Academic Number
PAPER(panum(P), title) //panum = Paper Number
AUTHOR(panum*(P), acnum(P)*)
FIELD(fieldnum(P), id, title)
INTEREST(fieldnum*(P), acnum*(P), descrip)

键:P =主键

仅凭这一点,你如何写一个查询,你找到所有与学术编号151共同撰写论文的学者?输出应列出学号,但不应包括学号151。

SELECT acnum
FROM ...
WHERE ...

而且,你如何撰写一个查询来寻找作者的学者,并且只与同一州的学院的作者共同撰写论文?

SELECT acnum, title, famname
FROM ...
WHERE ...

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以多次在查询中使用同一个表。以下是解决第一个查询的一种方法:

select p2.acnum
from ( select panum from paper where acnum = 151) p1
     join paper p2
     on p1.panum = p2.panum
where p2.acnum != 151   
/