每条记录至少出现一次数据

时间:2014-10-10 18:37:06

标签: mysql sql database

假设我有三个表:电影,分支,租用,其中分支告诉电影租赁店的不同分支。现在我想找到在每个分支中至少租过一次的所有电影。我无法真正了解如何检查它们是否在每个分支中至少租用一次

这些是我制作的表格

Movie(mid, title, genre, year)
Branch(bid, bname, baddress)
Rented(mid, bid, copyid, outdate, returndate, cost)

2 个答案:

答案 0 :(得分:1)

为每部电影计算分支数,并与分支总数进行比较。选择找到的电影。

select *
from movie
where mid in
(
  select mid
  from rented
  group by mid
  having count(distinct bid) = (select count(*) from branch)
);

答案 1 :(得分:0)

由于您想要返回已在每个分支中租借的所有影片,您可以使用聚合作为该分数并将其与整个分支的数量进行比较:

SELECT m.mid
FROM branch b
    JOIN rented r ON b.bid = r.bid
    JOIN movie m ON r.mid = m.mid
GROUP BY m.mid
HAVING COUNT(DISTINCT b.bid) = (SELECT COUNT(bid) FROM branch)