gpt4 book ai didi

mysql - 如何查询可用商品?

转载 作者:行者123 更新时间:2023-11-30 01:16:28 25 4
gpt4 key购买 nike

我想知道是否有人可以帮助我查询 mysql 数据库的可用性。

所以,我有两个表:tbl_items(单位项目)和tbl_reservations。

tbl_reservations
-条形码
-日期保留
-时间开始
-时间结束

tbl_items
-条形码
-项目名称
-项目描述

我想做的是这样的(请引用图片):
Reservations

到目前为止,这是我的查询:

SELECT a.bcode, b.resdate, b.timestart, b.timeend
FROM tbl_items a
INNER JOIN tbl_reservations b
on a.bcode=b.bcode
WHERE a.bcode
not in
(
Select bcode
FROM tbl_reservations
WHERE bcode not in
(
SELECT bcode
FROM tbl_reservations
where resdate='2013-09-25' AND retdate is null
)
AND ((timestart < '10:00'AND timeend < '10:00')
AND (timestart > '15:00' AND timeend > '15:00'))
)

但即使有这么长的代码,它仍然允许一些已经预订或应该不可用的设备显示。

有什么帮助吗?

谢谢! :D

结果集的屏幕截图,其中包含我不想包含在结果集中的保留:
Resultset

突出显示的内容是与上面代码中的条件重叠的内容...

更新:这是新代码...我很惊讶,因为它返回了 timestart 和 timeend 都在 10:00 之前的行。

select rsv.controlno, rsv.bcode, rsv.resdate, rsv.timestart, rsv.timeend
FROM
(
select bcode
from tbl_items
) i
inner join tbl_reservations rsv
on i.bcode=rsv.bcode
WHERE resdate='2013-09-25' AND NOT (rsv.timeend > '10:00' AND rsv.timestart < '15:00');

最佳答案

尝试下面的代码。我相信把 AND 换成 OR 就可以了。外部 AND 要求其中一个条件为真。内部OR会抢到时段之前的预订,OR会抢到时段外的预订,但不会抢到时段内的预订。

SELECT a.bcode, b.resdate, b.timestart, b.timeend
FROM tbl_items a
INNER JOIN tbl_reservations b
on a.bcode=b.bcode
WHERE a.bcode
not in
(
Select bcode
FROM tbl_reservations
WHERE bcode not in
(
SELECT bcode
FROM tbl_reservations
where resdate='2013-09-25' AND retdate is null
)
AND
((timestart < '10:00' AND timeend < '10:00')
OR (timestart > '15:00' AND timeend > '15:00')

)
)

将时间范围内的 AND 替换为 OR。

关于mysql - 如何查询可用商品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19007349/

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