假设我有三张桌子:电影,分行,出租,其中分行告诉不同的电影租赁店。现在我想在每家分店里找到至少租过一次的所有电影。我真的搞不懂如何在每个分支机构中至少一次检查他们是否是租来的.
这些是我做的桌子
Movie(mid, title, genre, year)
Branch(bid, bname, baddress)
Rented(mid, bid, copyid, outdate, returndate, cost)发布于 2014-10-10 19:04:08
计算每部电影的分支并与分支总数进行比较。选择这样找到的电影。
select *
from movie
where mid in
(
select mid
from rented
group by mid
having count(distinct bid) = (select count(*) from branch)
);发布于 2014-10-10 18:48:12
由于您希望返回在每个分支中租来的所有电影,因此您可以为此使用一个聚合,并将其与整个分支的数量进行比较:
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)https://stackoverflow.com/questions/26305913
复制相似问题