0

宿題に sql クエリが必要です。クエリは正しい結果を返す必要があります。

私の間違ったクエリ:

SELECT RZ.* FROM TBL_HOTEL_RESERVATION AS RZ
INNER JOIN TBL_HOTEL_ROOM AS ROOM
ON ROOM.ROOM_CODE <> RZ.ROOM_CODE 
WHERE 
(CONVERT(DATETIME,LEFT(RZ.ARRIVAL_TIME,12)) <= CONVERT(DATETIME,LEFT('3/12/2013',12))
AND
CONVERT(DATETIME,LEFT(RZ.LEAVE_TIME,12)) > CONVERT(DATETIME,LEFT('3/12/2013',12)))
OR
(CONVERT(DATETIME,LEFT(RZ.ARRIVAL_TIME,12)) < CONVERT(DATETIME,LEFT('3/14/2013',12))
AND
CONVERT(DATETIME,LEFT(RZ.LEAVE_TIME,12)) >= CONVERT(DATETIME,LEFT('3/14/2013',12)))

例えば

room no : 1040
first reservation: 12 march  2013 -15 march 2013
second reservation: 13 march 2013 - 16 march 2013

私がやろうとしているのは、部屋がこれらの日付範囲で予約されている場合、2 番目の予約を行うべきではありません。

4

2 に答える 2

0

使用している関数が多すぎます。日付範囲クエリは次のように単純です

where YourDateField >= TheStartofYourDateRange
and YourDateField < TheDayAfterTheEndOfYourDateRange

課題を考えるときは、このことを念頭に置いてください。

于 2013-03-28T12:26:09.360 に答える