0

予約データベースから2012-05-1から2012-11-01の間に予約された部屋を選択するためのクエリをどのように記述しますか?

4

3 に答える 3

3
select r.* from rooms r 
left outer join bookings b on b.roomno = r.roomno
where b.dateto not between '2012-05-01' and '2012-11-01'
and b.datefrom not between '2012-05-01' and '2012-11-01'
or b.roomno is null

SQLFiddleの例

于 2012-04-28T07:39:11.163 に答える
2

これには、指定された2つの日付の間に予約されていないすべての部屋が含まれる必要があります。

SELECT * FROM Room r
JOIN Booking b ON b.hotelNo = r.hotelNo AND r.roomNo = b.roomNo
WHERE NOT ('2012-05-01' BETWEEN (b.dateFrom AND b.dateTo)
OR '2012-11-01' BETWEEN (b.dateFrom AND b.dateTo))
于 2012-04-28T07:48:39.477 に答える
1

以下をお試しください

SELECT * from room
WHERE (roomNo, hotelNo) not in
( select roomNo, hotelNo
  from booking
  where datefrom between '2012-05-01' and '2012-11-01'
  or dateto between '2012-05-01' and '2012-11-01'
)
于 2012-04-28T07:41:20.300 に答える