【问题标题】:Check two date was not between two another date + MYSQl检查两个日期不在两个另一个日期之间+ MYSQl
【发布时间】:2014-11-11 13:15:06
【问题描述】:

我正在查询酒店预订和预订系统,但我遇到了在两个日期之间没有预订房间的问题。 我的查询与此类似,但效果不佳,查询返回注意,但实际上我有 3 间房间类型为 1 的房间。 Sql 小提琴: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

感谢您的帮助,并为我的英语不好感到抱歉。

【问题讨论】:

  • 请使用数据和此查询设置SQL Fiddle
  • 您的第一部分 where 包含两次 $checkin 并且不包含 $checkout for checkout_data
  • SQL 小提琴:sqlfiddle.com/#!2/b97419
  • tb_room 中没有数据。不管怎样,你有没有看我写的???您需要在WHERE 的第一部分将$checkin 更改为$checkout,因为您在需要使用$checkout 的地方使用$checkin

标签: php mysql


【解决方案1】:

试试这样的

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

【讨论】:

    猜你喜欢
    • 2019-08-05
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2013-10-04
    • 1970-01-01
    相关资源
    最近更新 更多