SQL查询有点复杂

SQL查询有点复杂,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,问题:写一个查询,查找那些是作者的学者,他们只与来自同一州的研究所的作者合著过论文。列出他们的学号、职称和姓氏 我一直在研究这个问题有一段时间了,我还没有想到一个合适的查询 我需要使用的数据库(表)的模式: ACADEMIC(ACNUM, DEPTNUM, FAMNAME, TITLE) DEPARTMENT(DEPTNUM, STATE) AUTHOR(PANUM, ACNUM) 在Author表中有多个ACNUM(帐号)用于1个PANUM(页码) 我试着去计划,我所能想到的就是这样的事情:

问题:写一个查询,查找那些是作者的学者,他们只与来自同一州的研究所的作者合著过论文。列出他们的学号、职称和姓氏

我一直在研究这个问题有一段时间了,我还没有想到一个合适的查询

我需要使用的数据库(表)的模式:

ACADEMIC(ACNUM, DEPTNUM, FAMNAME, TITLE)
DEPARTMENT(DEPTNUM, STATE)
AUTHOR(PANUM, ACNUM)
在Author表中有多个ACNUM(帐号)用于1个PANUM(页码)

我试着去计划,我所能想到的就是这样的事情:

需要在Author表中循环

SELECT PANUM
FROM AUTHOR A
然后需要找到该论文的所有作者:

SELECT ACNUM
FROM AUTHOR B
WHERE PANUM = A.PANUM;
然后需要与所有州相交:

SELECT DEPTNUM, TITLE, FAMNAME, UPPER(STATE)
FROM ACADEMIC C, DEPARTMENT D
WHERE C.ACNUM = B.ACNUM AND D.DEPTNUM = C.DEPTNUM;
你们能帮我做点什么吗?谢谢你的帮助

编辑:更多信息


由于有数百行数据,我实际上还没有找到理想的结果。本质上,我必须通过以下方式查询数据库:从Author表中选择页码,然后查找Author表中该页码的所有帐号,然后使用所有这些帐号,我需要确保它们都处于相同的状态。例如,Account 100和101一起在第300页上工作,并且都在state VIC,因此我会列出学术信息(famname、title和acnum)

您需要查询一个表,将
学术
部门
作者
表连接在一起,然后通过纸张将该表自连接,限制在state上,要获得所需的结果,请执行以下操作:

SELECT DISTINCT t1.FAMNAME, DISTINCT t1.TITLE FROM
(ACADEMIC a1 INNER JOIN DEPARTMENT d1 ON a1.DEPTNUM = d1.DEPTNUM
INNER JOIN AUTHOR auth1 ON a1.ACNUM = auth1.ACNUM) t1
INNER JOIN
(ACADEMIC a2 INNER JOIN DEPARTMENT d2 ON a2.DEPTNUM = d2.DEPTNUM
INNER JOIN AUTHOR auth2 ON a2.ACNUM = auth2.ACNUM) t2
GROUP BY t1.PANUM
HAVING COUNT(DISTINCT t2.STATE) = 1;

请提供(以文本形式添加到您的问题中)您的测试数据和所需结果。我认为我们可以在没有测试数据的情况下解决此问题,但这会有所帮助。上述查询有效,但不会产生预期结果。我的列表需要由所有作者来自同一州的合著者组成。我已经包括了一个显示PANUM#7被返回的图像,即使有另一个来自另一个州的作者@JohnnyDoey我将我的查询更新为按论文分组,然后只保留所有作者状态相同的记录。