gpt4 book ai didi

mysql - 特定时间段的sql查询

转载 作者:行者123 更新时间:2023-11-30 00:07:01 27 4
gpt4 key购买 nike

我正在尝试编写一个包含以下详细信息的 mysql 查询-

我有三张 table

1) 预订表,其中包含 booking_id 、旅程开始日期时间、旅程结束日期时间列。

2) 包含列驱动程序 driver_id 、 driver_name 的驱动程序表。

3) Driver_Assign 表,包含 booking_id、driver_id、busy_start_datetime、busy_end_datetime 列。

当我将预订分配给司机时,Driver_Assign 表中会出现一个新条目,其中包含 booking_id 、旅程开始日期时间、旅程结束日期时间的详细信息。

我想获取在给定时间内不忙的所有司机姓名。即

让一次预订分配给司机“John”,旅程开始日期时间 ->'2014-06-27 12:00:00' 和旅程结束日期时间 ->'2014-06-27 14:00:00'。

现在,对于新预订(journey_start_datetime->'2014-06-27 13:00:00'和journey_end_datetime->'2014-06-27 15:00:00'),司机John不会来。

将OP的代码从评论移至问题 -

SELECT U.driver_name 
FROM driver AS U
where U.id not in
(select driver_id
from driver_assign as DVA
WHERE ('2014-06-27 13:00:00'>= DVA.busy_start_datetime OR
'2014-06-27 13:00:00'<= DVA.busy_end_datetime
) AND
('2014-06-27 15:00:00'>= DVA.busy_start_datetime OR
'2014-06-27 15:00:00'=< DVA.busy_end_datetime
)
)

最佳答案

SELECT d.driver_name 
FROM driver d
LEFT JOIN driver_assign da ON da.driver_id=d.driver_id
WHERE
da.busy_start_datetime <='2014-06-27 13:00:00'
AND da.busy_end_datetime>='2014-06-27 13:00:00'
HAVING da.driver_id is null

您只需要 LEFT JOIN 并排除非空(繁忙)的行

关于mysql - 特定时间段的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444496/

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