Php 检查两个日期不在两个其他日期+MYSQl之间

Php 检查两个日期不在两个其他日期+MYSQl之间,php,mysql,Php,Mysql,我正在写一个关于酒店预订和预订系统的查询,但是我在选择两个日期之间没有预订的房间时遇到了一个问题。 我的查询与此类似,但不起作用,并且查询返回,但实际上我有3个房间,房间类型为1。 Sql fiddle: 谢谢你的帮助,很抱歉我的英语不好。试试这样的 SELECT tbl_room.room_no, tbl_room.type_id, tbl_room.id, tr.id as reserv_status FROM tbl_room LEFT JOI

我正在写一个关于酒店预订和预订系统的查询,但是我在选择两个日期之间没有预订的房间时遇到了一个问题。 我的查询与此类似,但不起作用,并且查询返回,但实际上我有3个房间,房间类型为1。 Sql fiddle:


谢谢你的帮助,很抱歉我的英语不好。

试试这样的

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

请使用数据和此查询设置。where的第一部分包含$checkin两次,而不包含$checkout for checkout\u dataSQL fiddle:tb\u文件室中没有数据。不管怎样,你读过我写的东西吗???您需要在WHERE的第一部分将$checkin更改为$checkout,因为您在需要使用$checkout的位置使用$checkin
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