我真的无法绕过这个更新的sql语句。
我有一个复制表和租借表的以下架构:
复制( copy_id, movie_id, branch_id, 主键(copy_id));
租借( 顾客ID, copy_id, 过时的, 归期 , 主键(customer_id,copy_id,outdate));
同一部电影会有多个副本。对于单个movie_id,我们可以有多个copy_id。 电影的每个副本都具有全局唯一的copy_id。因此,2部不同电影的副本不能具有相同的copy_id。
有多个分支都有电影的副本,当然copy_id也是唯一的。
如果多次租借,同一部电影和副本肯定会多次出租。
我需要写一个更新声明,比如说 - 我们在一个分支机构有10个电影拷贝,时间跨度为30天,因此在300个租赁日期(30天* 10个拷贝)中,副本需要出租至少290个租赁日。如果这是真的,那么我需要在该分支添加该特定电影的另一个副本。
我尽力以最好的方式解释这个问题。简而言之,如果电影在90%的时间在分支机构出租,我需要添加一份副本。
答案 0 :(得分:1)
通过branch_id,movie_id
从副本组中选择branch_id,movie_id,count(*)此查询是分支影片计数。也许你已经有了分支表,使用它。
SELECT DATE_FORMAT(outdate,'%Y%m'),branch_id,movie_id,SUM(DATEDIFF(returnsndate,outdate))FROM copy AS c INNER JOIN rental AS r ON c.copy_id = r.copy_id GROUP BY DATE_FORMAT(outdate,'%Y%m'),c.branch_id,c.movie_id
此查询是每个分支和电影的每月租借时间。
该查询是计算的基本查询。你可以像
那样制作逻辑如果每月租赁时间+新租赁时间>分支机构租赁限额
( 添加新的复制请求 )