我想知道是否有人可以帮助我查询我的 mysql 数据库的可用性。
所以,我有两个表:tbl_items(单位项目)和 tbl_reservations。
tbl_reservations
-barcode
-dateReserved
-timeStart
-timeEnd
tbl_items
-barcode
-itemName
-itemDesc
我想做的是这样的(请参考图片):
到目前为止,这是我的查询:
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
带有保留的结果集的屏幕截图,我的意思是不包含在结果集中:
突出显示的是与上面代码中的条件重叠的那些......
更新:这是新代码...我很惊讶,因为它返回了在 10:00 之前同时具有 timestart 和 timeend 的行。
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');