有这两个表:
DEPARTMENT
DNAME
-----------
RESEARCH
IT
SCIENCE
DEPTLOC
DNAME LOCATION
----------------------
RESEARCH BOSTON
IT LONDON
RESEARCH DALLAS
SCIENCE BOSTON
我的问题是找到DNAME
只位于波士顿或伦敦但不在两个城市的地方。
我使用以下查询:
SELECT D.DNAME
FROM DEPARTMENT D
INNER JOIN DEPTLOC L ON L.DNAME = D.DNAME
WHERE L.CITY='BOSTON' OR L.CITY='DALLAS'
GROUP BY D.DNAME
HAVING COUNT(1) = 1;
它有效,但我不认为这是正确的,因为我的问题是:
"Implementing set algebra SELECT statements"
那么为了使用正确的陈述获得正确的结果,我应该改变什么? 输出应该是:
DNAME
-----------
IT
SCIENCE
答案 0 :(得分:1)
如果我在哪里猜测您被要求使用UNION
,INTERSECT
和DIFFERENCE (MINUS or EXCEPT)
等设置操作来提供解决方案。如果A是位于波士顿的部门而B是位于伦敦的部门那么(A - B)U(B - A)是一个解决方案
答案 1 :(得分:1)
设置代数意味着使用集合运算符:UNION, MINUS, INTERSECT
。