使用set Algebra的SELECT语句

时间:2014-05-01 11:11:54

标签: sql oracle

有这两个表:

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

2 个答案:

答案 0 :(得分:1)

如果我在哪里猜测您被要求使用UNIONINTERSECTDIFFERENCE (MINUS or EXCEPT)等设置操作来提供解决方案。如果A是位于波士顿的部门而B是位于伦敦的部门那么(A - B)U(B - A)是一个解决方案

答案 1 :(得分:1)

设置代数意味着使用集合运算符:UNION, MINUS, INTERSECT