gpt4 book ai didi

mysql - 检查结果集中是否存在一组键

转载 作者:行者123 更新时间:2023-11-29 06:46:23 24 4
gpt4 key购买 nike

在一个简化的租赁系统中,存在三个关系:

  • 图书:id、书名、描述
  • 复制:id, book_id
  • 预订:id、copy_id、rent_from、rent_until

每本书都有很多副本。如果客户租了一本书,则会选择可用的副本并创建相应的预订记录。

现在我的问题是:客户选择了一本书,他/她想租。系统需要检查哪些副本在给定的租赁期内可用。

查询可用副本的最优雅、最快速的方法是什么?

基本上,一步一步会执行以下操作:

  1. 选择相应图书的所有副本
  2. 选择那些副本的指定期间内的所有预订
  3. 检查所选预订中未包含哪些图书副本。如果包含所有副本,则该书在给定期间不可出租

第 3 步让我头疼。如何在 SQL 中执行此操作?我什至可以在一个优雅的查询中执行所有三个步骤吗?

最佳答案

假设您有 bookid。您正在寻找:

select c.*
from copies c
where not exists (select 1
from booking b
where b.copy_id = c.id and
b.rent_until >= @PeriodStart and b.rent_from <= @PeriodEnd
);

这是检查重叠的时间段。如果预订在期间开始后结束,并且预订在期间结束前开始,则存在重叠。比较可能是 <> , 取决于是否可以在 rent_until 上租到一本书日期,或者是否必须等到第二天。

关于mysql - 检查结果集中是否存在一组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com