如何获取关系属性中重复的值?

时间:2014-10-14 00:15:19

标签: database database-schema relational-algebra

所以我有一个关系:

  

汽车(模型,乘客)

这些模型都是独一无二的,比方说{A,B,C,D,E}。

乘客只是汽车的容量(任何正的非零整数),让我们说{1,2,2,3,3}

Model|Passenger
A    |1
B    |2
C    |2
D    |3
E    |3

我需要找到关系代数表达式,它会产生多于1辆车辆的容量。因此,使用上面的示例值,表达式应该返回{2,3},因为它们对于不同的车辆不止一次出现。

我非常倾向于认为表达式会使用某种联接,但我无法弄清楚如何做到这一点。

2 个答案:

答案 0 :(得分:1)

我明白了:

假设现有关系汽车(模型,乘客)包含所有相关汽车及其乘客容量。

CARS2(model,passenger)≔ρ_(m,p) (CARS)
Answer (passenger)≔π_passenger (CARS⋈_(model ≠ m AND passenger=p) CARS2)

答案 1 :(得分:0)

我不确定关系代数表达式,它可能看起来像

π Passenger σ Count(Model) >= 2 G Passenger (Table1)

但如果您正在查找查询而不是其中包含JOIN

SELECT passenger
  FROM table1
 GROUP BY passenger
HAVING COUNT(model) >= 2

结果:

| PASSENGER |
|-----------|
|         2 |
|         3 |

这是 SQLFiddle 演示