私のmysqlデータベースで可用性を照会するのを誰かが手伝ってくれるかどうか疑問に思っていました.
すっごく、tbl_items(ユニット項目) と tbl_reservations の 2 つのテーブルがあります。
tbl_reservations
-barcode
-dateReserved
-timeStart
-timeEnd
tbl_items -バー
コード
-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');