假设我有三个表:电影,分支,租用,其中分支告诉电影租赁店的不同分支。现在我想找到在每个分支中至少租过一次的所有电影。我无法真正了解如何检查它们是否在每个分支中至少租用一次。
这些是我制作的表格
Movie(mid, title, genre, year)
Branch(bid, bname, baddress)
Rented(mid, bid, copyid, outdate, returndate, cost)
答案 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)