我正在尝试从MySQL数据库中生成报告。
我有2张桌子:
___房间
|--------|------------|
| ROO_Id | ROO_Number |
|--------|------------|
| 1 | 101 |
| 2 | 102 |
| 3 | 103 |
| 4 | 104 |
| 5 | 105 |
|--------|------------|
___预订
|--------|------------|------------|------------|-------------------|
| BOO_Id | BOO_RoomId | BOO_DateCI | BOO_DateCO | BOO_ArrivalStatus |
|--------|------------|------------|------------|-------------------|
| 1 | 1 | 2018-07-03 | 2018-07-05 | checkout |
| 2 | 2 | 2018-07-16 | 2018-07-17 | checkin |
| 3 | 3 | 2018-07-14 | 2018-07-16 | none |
| 4 | 5 | 2018-07-14 | 2018-07-18 | checkin |
|--------|------------|------------|------------|-------------------|
我的目标是提供以下报告:
报告日期为今天
2018-07-16
。
|------------|----------------|
| ROO_Number | BOO_LiveStatus |
|------------|----------------|
| 101 | no |
| 102 | in-house |
| 103 | in-house |
| 104 | no |
| 105 | in-house |
|------------|----------------|
我在这里放了一个SQLFidde: http://sqlfiddle.com/#!9/3bb474
我最后一次尝试是这样:
SELECT
ROO_Number,
IF(BOO_DateCI >= '2018-07-16' AND BOO_DateCO <= '2018-07-16', 'in-house', 'no')
AS BOO_LiveStatus
FROM ___Rooms
INNER JOIN ___Bookings
ON ___Rooms.ROO_id = ___Bookings.BOO_RoomId
答案 0 :(得分:1)
您似乎将<
和>
条件放在错误的位置。另外,您需要使用LEFT JOIN
而不是INNER JOIN
。请查看下面的更正查询:
SELECT
ROO_Number,
IF(BOO_DateCI <= '2018-07-16' AND BOO_DateCO >= '2018-07-16', 'in-house', 'no')
AS BOO_LiveStatus
FROM ___Rooms
LEFT JOIN ___Bookings
ON ___Rooms.ROO_id = ___Bookings.BOO_RoomId
ORDER BY
ROO_Number