我有2张桌子:
___房间
<button type="button" data-toggle="modal" data-target="#exampleModal<?php echo $zed; ?>">
your button
</button>
<div class="modal" id="exampleModal<?php echo $zed; ?>">
your modal
</div>
___预订
|--------|------------|
| 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
我在这里放了一个SQLFidde: http://sqlfiddle.com/#!9/854079/5
实际上,我距离很近,但是我有一个小问题。
在我的报告中,___ Rooms表中的每个房间需要一行。但是实际上,我有更多行(#102中有2行)。
|------------|----------------|-------------------|
| ROO_Number | BOO_LiveStatus | BOO_ArrivalStatus |
|------------|----------------|-------------------|
| 101 | no | checkout |
| 102 | in-house | checkin |
| 103 | in-house | none |
| 104 | no | 0 |
| 105 | in-house | checkin |
|------------|----------------|-------------------|
不应显示,因为今天的日期不在2018-07-13和2018-07-15之间。
我最后一次尝试是这样:
(1, 2, '2018-07-13', '2018-07-15', 'checkout')
能请你帮我吗?
非常感谢。
答案 0 :(得分:0)
将日期检查添加到ON
子句中。
SELECT
ROO_Number,
IF(BOO_DateCI <= '2018-07-16' AND BOO_DateCO >= '2018-07-16', 'in-house', 'no')
AS BOO_LiveStatus,
IFNULL(BOO_ArrivalStatus, '0')
AS BOO_ArrivalStatus
FROM ___Rooms
LEFT JOIN ___Bookings
ON ___Rooms.ROO_id = ___Bookings.BOO_RoomId
AND CURDATE() BETWEEN ___Bookings.BOO_DateCI AND ___Bookings.BOO_DateCO
ORDER BY
ROO_Number
您需要在ON
中进行操作,而不是在WHERE
中进行操作,因为将其放置在WHERE
中会过滤掉所有没有预订的房间(因为列将是{{1 }}。