编写SQL查询

时间:2012-04-28 07:35:19

标签: sql sql-server-2008

您如何编写查询以选择之间预订的房间 2012-05-1和2012-11-01来自预订数据库?

3 个答案:

答案 0 :(得分: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 Example

答案 1 :(得分: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))

答案 2 :(得分: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'
)