mysql查询样本编号为1或2的记录_mysql – 帮助SQL查询查找预订系统的下一个可用日期...

以下内容可以帮到你.您可能想要调整我的“Current_Date()”函数样本,无论您的预订开始日期是多少都可以出去……

这在查询中使用MySQL内联变量.内部查询是基于某个开始日期(current_date())的预留(@r)变量的简单准备,并且连接到项目表.通过不执行join子句,它将为每个项目获取一个日期.在我的场景中,我只考虑外出30天,所以我已经应用了前30项的限制.除了给我足够的记录之外没有基础,所以我不必创建一个包含30条记录的临时表(或者你想要出去多少天).这将创建别名查询“JustDates”并具有单个列“OpenDate”.这是要测试的日期范围的基础.

这现在加入了items表,但没有条件为每个日期创建一个笛卡尔说,与每个项目进行比较…根据WHERE子句,我只关心SKU为“ABC123”天气他们有10个序列的项目#s或100.这将给我一个可能的300或3000(30天的10个连续项目,或30天的100个连续项目).

现在我有一个所有单个序列号的“范围”和可能的日期来检查可用性,我现在可以查询预订系统.因此,通过子选择和NOT IN来获得给定的匹配SKU,SERIAL#和在预订中找到的可能日期,我只想保留那些找不到给定OpenDate的日期.我已经模拟了你的桌子结构,并放入了一些项目,多个序列号和滞留的预订日期范围,它很棒…

显然,我会确保sku / serial上的索引的性能.我可能进行的唯一额外更改是查询预订时,排除任何结束日期在您的查询的起始日期之前的预订,并且可选地,没有开始日期>你正在考虑的最后一个日期.如果您有多年的保留意见,那么他们会关注某些古老的东西,或者从未来的日期范围开始.

select items.sku,

items.serial_number,

JustDates.OpenDate

from

( SELECT

@r:= date_add(@r, interval 1 day ) OpenDate

FROM

(select @r := current_date()) vars,

items limit 30 ) JustDates,

items

where

sku = "ABC123"

and sku not in ( select sku from Reservations

where items.sku = reservations.sku

and items.serial_number = reservations.serial_number

and justDates.OpenDate >= reservations.start_date

and justDates.OpenDate <= reservations.end_date )

order by

items.serial_number,

justDates.OpenDate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值