выбрав более одной строки совпадающих данных - PullRequest
2 голосов
/ 14 октября 2010

Мне нужно выбрать номер (cid) клиента, который арендовал один и тот же фильм в 2 разных филиалах.Мои таблицы таковы:

RENTED
(cid, copyid)
12345  99999
12345  88888

COPY
(copyid, mid, bid)
99999    444  123
88888    444  456

Таким образом, один клиент (12345) арендовал один и тот же ход (444) из двух разных филиалов (123, 456).Я не уверен, как сравнивать значения, когда в двух разных записях значения mid = mid, но bid! = Bid.Я пытался использовать 'some' и 'all', но это не дает мне строк (код ниже)

select cid
from rented R join copy CP on R.copyid = CP.copyid
where CP.mid = all (select mid from copy where CP.mid = copy.mid) and CP.bid != some (select bid 
from copy where CP.bid = copy.bid);

, и мой вывод должен быть

cid
12345

Ответы [ 2 ]

3 голосов
/ 14 октября 2010

вы можете использовать предложение HAVING. Следующий запрос выведет список всех клиентов, которые когда-либо снимали один и тот же фильм несколько раз:

SELECT r.cid
  FROM rented r
  JOIN copy p ON r.copyid = p.copyid
 GROUP BY r.cid, p.mid
 HAVING COUNT(DISTINCT c.bid) > 1
0 голосов
/ 14 октября 2010

Использование одного прохода на каждом столе:

выберите отличный (cid) из ( выберите cid, count (bid) over (разделить по r.cid, c.mid) dist_branch от арендованного г, копия с где r.copyid = c.copyid) где dist_branch> 1;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...