ลองดูไม่รู้ได้หรือป่าว
where ( time1>$input1 and time1>$input2) or ( time2<$input1 and time2<$input2)
แล้ว count ดูนะ
ถ้าเท่ากับ 1 เพิ่มได้
ถ้าเท่ากับ 0 เพิ่มไม่ได้
$bookStart = "2010-07-10";
$bookEnd = "2010-07-12";
SELECT * FROM booking WHERE ($bookStart BETWEEN time1 and time2) or ($bookEnd BETWEEN time1 and time2)
ถ้ามี record แสดงว่าซ้ำครับ อันนี้ใช้ได้แน่นอนครับ
$bookStart = "2010-07-10 09:30:00";
$bookEnd = "2010-07-10 12:00:00";
SELECT * FROM booking WHERE ($bookStart BETWEEN time1 and time2) or ($bookEnd BETWEEN time1 and time2)
SELECT * FROM table booking WHERE (StartDate BETWEEN '2011-05-17 18:00:00' and '2011-05-20 21:00:00') OR (EndDate BETWEEN '2011-05-17 18:00:00' and '2011-05-20 21:00:00')
SELECT *,count(rtid) as num_room FROM room_order WHERE (chk_in BETWEEN ' 2011-11-19' and '2011-11-20') OR (chk_out BETWEEN ' 2011-11-19' and '2011-11-20') group by rtid
ในการค้นหาห้องตัวนี้ค้นเจอปกตินะครับ
ตอนนี้ผมเจอปัญหาประมาณว่า
สมมุติ ห้องที่ผมสร้างมี 2 ห้อง
ถ้า มี user จองไว้ระหว่างวันที่ 2011-11-15 to 2011-11-30 แล้ว
และลูกค้าคนต่อไป ต้องการจองห้อง วันที่ 2011-11-19 to 2011-11-20
ซึ่งเมื่อลองใช้ between จะกลายเป็นว่าไม่เห็น record ที่จองไป 2011-11-15 to 2011-11-30