这是在 sql oracle 中使用 ONLY 集合运算符完成的,NOT IN、IN、NOT EXISTS、EXISTS、ANY、ALL。
数据库是:
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)
问题是:
查找昆士兰州(昆士兰州或昆士兰州)没有人撰写过论文的部门的部门编号、描述和机构名称。
我目前的尝试是找出根本没有人撰写论文的部门,无论他们来自哪个州
SELECT department.deptNum, department.state, department.instname
FROM department, academic
WHERE department.deptnum = academic.deptnum
AND NOT EXISTS
(SELECT *
FROM author
WHERE acnum = academic.acnum);
但显然它应该只返回 1 个元组。我得到 3 1 其中是 QLD。如果我尝试通过添加删除其他 2
AND department.state = 'QLD' OR department.state = 'Qld'
在 WHERE 子句和 AND NOT EXISTS 之间,我得到了太多结果。
谁能指导我解决问题?