MySQL查询后重复的行

时间:2018-07-16 19:36:54

标签: mysql

我有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')

能请你帮我吗?

非常感谢。

1 个答案:

答案 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 }}。

SqlFiddle