doomli3721 2014-11-11 13:15
浏览 43
已采纳

检查两个日期不是在另外两个日期+ MYSQl之间

I am writhing a query for a hotel reservation and booking system but I got a problem with selecting rooms was not reserved between two date . my query is alike this but it's not working as well and query return noting but actually I have 3 room with room type 1 . Sql fiddle : http://sqlfiddle.com/#!2/b97419

SELECT tbl_room.room_no, tbl_room.type_id, tbl_Reservation.room_id
FROM tbl_room
LEFT JOIN tbl_Reservation ON tbl_room.id = tbl_Reservation.room_id
WHERE (
(
tbl_Reservation.checkin_data < '" . $checkin . "'
AND tbl_Reservation.checkout_data < '" . $checkin . "'
)
OR (
tbl_Reservation.checkin_data > '" . $checkout . "'
AND tbl_Reservation.checkout_data > '" . $checkout . "'
)
)
AND tbl_room.type_id =1

thanks for your helping and sorry for my bad english .

  • 写回答

1条回答 默认 最新

  • dragon8002 2014-11-11 13:57
    关注

    Try something like this

    SELECT 
        tbl_room.room_no, 
        tbl_room.type_id, 
        tbl_room.id,
    
        tr.id as reserv_status
    
    FROM tbl_room
    
     LEFT JOIN tbl_Reservation tr ON tbl_room.id = tr.room_id AND 
               (
                 (tr.checkin_data <= "'$checkin'" AND tr.checkout_data >= "'$checkin'")
                 OR
                 (tr.checkin_data <= "'$checkout'" AND tr.checkout_data >= "'$checkout'")
               )
    
     WHERE 
    
     tbl_room.type_id =1  AND tr.id IS NULL
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?