Вопрос: Как получить значения, которые повторяются в атрибуте отношения?


Поэтому у меня есть отношение:

Автомобили (модель, пассажирские)

Модели уникальны, скажем, {A, B, C, D, E}.

Пассажиры - это просто способность автомобиля (любое положительное ненулевое целое число), скажем {1,2,2,3,3}

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

Мне нужно найти выражение реляционной алгебры  что даст возможность для более чем одного транспортного средства. Таким образом, с приведенными выше примерами выражение должно возвращать {2, 3}, поскольку они появляются более одного раза для разных транспортных средств.

У меня есть сильная склонность думать, что выражение будет использовать какое-то соединение, но я не могу понять, как это сделать.


4


источник


Ответы:


Я понял:

Предполагая существующее отношение Автомобили (модель, пассажир), которые содержат все рассматриваемые автомобили и их пассажирские мощности.

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

1



Я не уверен в выражении реляционной алгебры, которое может выглядеть как-то вдоль линий

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

но если вы ищете запрос, который не включает JOIN в этом

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

Результат:

| ПАССАЖИР |
| ----------- |
| 2 |
| 3 |
 

Здесь SQLFiddle  демонстрация


0