抱歉,但是我对SQL编程的经验很少,我需要弄清楚为什么我的SQL查询无法正常工作...我一直试图无济于事!
数据库SQL文件位于此处
数据库架构如下:
DEPARTMENT(deptnum, descrip, instname, deptname, state, postcode)
ACADEMIC(acnum, deptnum*, famname, givename, initials, title)
PAPER(panum, title)
AUTHOR(panum*, acnum*)
FIELD(fieldnum, id, title)
INTEREST(fieldnum*, acnum*, descrip)
本质上,我试图找出以下内容,并遇到一些实际问题:
需要找到对一项以上研究感兴趣的学者。我需要列出这些学者的acnum,famname和givename,按famname,然后按givename排序。
select A.acnum, A.givename, A.famname, INTEREST.FIELDNUM
from ACADEMIC A, INTEREST
where A.ACNUM = INTEREST.ACNUM
having count (Interest.acnum) > 1;
像这样吗?
我需要找到是否有没有学者对之感兴趣的研究领域?我需要打印像这样的研究领域的总数。我相信查询使用SET运算符。
我需要找到感兴趣的学者最多的研究领域。我需要输出fieldnum和感兴趣的学者人数。
该模式对我来说还不太清楚,但这是一个起点:
1)第一个:
SELECT a.acnum, a.famname ,a.givename, count(i.fieldnum)
FROM ACADEMIC a INNER JOIN INTEREST i ON a.acnum = i.acnum
GROUP BY a.acnum, a.famname ,a.givename
HAVING COUNT(i.fieldnum) > 1
ORDER BY a.famname ,a.givename;
2)如果您只需要它们的数量:
SELECT COUNT(1)
FROM FIELD f
WHERE NOT EXISTS(SELECT 1
FROM ACADEMIC a
INNER JOIN INTEREST i ON a.acnum = i.acnum
WHERE f.fieldnum = i.fieldnum);
3)有点模糊,因为我不知道最大的实际含义,但这是排序后的列表:
SELECT f.fieldnum, count(a.acnum) as number_of_interested_academics
FROM FIELD f
INNER JOIN INTEREST i ON f.fieldnum = i.fieldnum
INNER JOIN ACADEMIC a ON i.acnum = a.acnum
GROUP BY f.fieldnum
ORDER BY count(a.acnum) DESC;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句