首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于日期范围获取当前列的查询

基于日期范围获取当前列的查询
EN

Database Administration用户
提问于 2020-12-07 17:32:08
回答 1查看 68关注 0票数 0

我有一个有以下表格的场景。问题是,当一辆车在表tBooking中预订时,这是由于以下情况所致。

示例

用户在分公司预订汽车(分公司是存放汽车的公司办公室所在地)

  • 用户A于2020年12月4日至6日(tBranch.StartBranchId)在A分局预订一辆汽车,并希望将其退回B分局(tBranch.EndBranchId)。
  • 用户B正在搜索2020年12月7日至12月7日在一个特定地点B的可用汽车。

如何编写查询,以便按日期范围和所请求的位置获得下一辆可用的汽车?

假设我正在B分局寻找可用的汽车,这就是我到目前为止尝试过的:

代码语言:javascript
复制
SELECT * FROM tVehicle WHERE VehicleID NOT IN (
    SELECT VehicleID FROM tBooking 
    WHERE StartDate >= @requestedDate
    AND EndDate <= @requestedDate
)
AND BranchId IN (
    SELECT BranchId FROM tBooking WHERE EndBranchId = @branchId
    -- I dont know how to write correct logic for the dates
    AND StartDate >= @requestedDate   
    AND EndDate <= @requestedDate
)
EN

回答 1

Database Administration用户

发布于 2020-12-09 13:14:23

假设tVehicle.BranchId包含车辆当前所在的分支,而B分支的branchId为2,这将起到作用

代码语言:javascript
复制
DECLARE @branchId int= 2;
DECLARE @availableDate date= '2020-12-09';

SELECT tv.*
FROM tVehicle tv
WHERE tv.BranchId=@branch
AND NOT EXISTS(SELECT 1 FROM tBooking tb WHERE tb.VehicleId=tv.VehicleId AND @availableDate BETWEEN tb.StartDate AND tb.EndDate);
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/281054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档