【发布时间】:2015-09-10 03:50:29
【问题描述】:
如何显示不在 tblreserve 表的 checkInDate 和 checkOutDate 列范围内的房间?
客户
customerID | Fname | Lname
1 | John | Smith
tbl预订
reservationID | customerID | reserveDate | checkInDate | checkOutDate
1 | 1 | 2015-09-09 | 2015-09-10 | 2015-09-11
房间
roomID | roomTypeID | roomStatusID | roomNumber | floorNumber
1 | 1 | 1 | 101 | 1
2 | 2 | 1 | 102 | 1
3 | 3 | 1 | 103 | 1
tblroomreserve
roomID | reservationID
1 | 1
tblroom状态
roomStatusID | roomStatus
1 | vacant
2 | occupied
3 | reserved
房间类型
roomTypeID | roomType
1 | Single Room
2 | Double Room
3 | Twin Room
我尝试了 INNER JOIN,但不是在 tblroom 表上显示在两个输入日期范围内未被占用的所有房间,而是仅在 tblreserve 不属于特定日期范围的表。即“2015-09-12”和“2015-09-13”
SELECT
`tblroom`.`roomNumber`
, `tblroomtype`.`roomTypeDescription`
, `tblroomtype`.`roomRate`
FROM
`hotelreservation`.`tblreservation`
INNER JOIN `hotelreservation`.`tblcustomer`
ON (`tblreservation`.`customerID` = `tblcustomer`.`customerID`)
INNER JOIN `hotelreservation`.`tblroomreservation`
ON (`tblroomreservation`.`reservationID` = `tblreservation`.`reservationID`)
INNER JOIN `hotelreservation`.`tblroom`
ON (`tblroomreservation`.`roomID` = `tblroom`.`roomID`)
INNER JOIN `hotelreservation`.`tblroomstatus`
ON (`tblroom`.`roomStatusID` = `tblroomstatus`.`roomStatusID`)
INNER JOIN `hotelreservation`.`tblroomtype`
ON (`tblroom`.`roomTypeID` = `tblroomtype`.`roomTypeID`)
AND NOT tblreservation.`checkInDate` >= '2015-09-12' AND tblreservation.`checkOutDate` <= '2015-09-13'
【问题讨论】:
-
提供的架构和查询中使用的架构不匹配
-
对不起。已更正。
标签: mysql sql date inner-join