【发布时间】:2014-12-09 16:55:20
【问题描述】:
我有以下表格:
copy(movie_id,copy_id)
rented(copy_id,outdate,returndate)
如果电影被出租,returndate在数据库中设置为null。
同一部电影会有多个副本。对于单个movie_id,我们可以有多个copy_id。
我需要检索已完全租出的电影,即所有电影的副本都已被租出或以另一种方式放置 - 电影的所有副本都存在于已租借的表中,并且返回日期设置为空。
我尝试过内部联接,但无法将复制表中的所有元组与租用的表相关联。
每个副本都有一个全局唯一的 copy_id。因此,两部不同电影的副本不能具有相同的 copy_id。
如果副本从未被租过,它不会出现在列表中,但这意味着这部电影仍然有库存,因为它从未被租过。这不应该出现。
如果多次租借,同一部电影和副本肯定会出现多次租借。
【问题讨论】:
-
....GROUP BY movie_ID HAVING SUM(returndate IS NOT NULL)=0 -
....你怎么知道租了什么电影?如果 2 部不同的电影各有 2 个副本...(电影 A 和 B 的副本 ID 1 和 2)不会复制 ID 2 仍然缺少租借的电影(是 A 电影还是 B 电影?)或者是 copy_Id所有电影的唯一标识符? (例如电影 A 和 B 的 copy_ID 为 1、2、3、4)并且永远不会有重复的 copy_ID?
-
此外,如果租借中没有记录,则仅表示该副本从未被租借过,因此此类电影不应出现在您的列表中,对吗?换句话说,您想要一个目前没有副本的电影标题列表......同一部电影和副本是否会多次出现在租借中?有趣的问题...
-
没有足够的信息来回答这个问题。我们需要知道 copy_ID 在所有电影中是否是唯一的,如果不是,那么如果没有租借中的附加字段,特别是 movie_ID,我们就无法完成请求。
-
我更新了我的问题
标签: mysql sql join data-retrieval