有这两个表:
部
DNAME ----------- RESEARCH IT SCIENCE
部门
DNAME LOCATION ---------------------- RESEARCH BOSTON IT LONDON RESEARCH DALLAS SCIENCE BOSTON
我的问题是找到DNAME仅位于波士顿或伦敦但不在两个城市都位于的地方。
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
如果我在那里猜你被要求提供使用集合操作等的溶液UNION,INTERSECT和DIFFERENCE (MINUS or EXCEPT)。如果A是位于波士顿的部门,而B是位于伦敦的部门,则(A-B)U(B-A)是一种解决方案
UNION
INTERSECT
DIFFERENCE (MINUS or EXCEPT)