[英]how to get the exactly mysql query of unbook rooms in hotel booking system?
我正在用php和mysql做酒店预订系统的项目,我在下面创建了rooms表
room_no| roo_id | room_type
D1 | 1 | Deluxe
R1 | 2 | AC
R2 | 3 | Non Ac
C1 | 4 | Cottage
该表是关于房间的总数,它表示酒店的总房间数。
这是customer_booking表,
customer_id | Cust_name | email | Address | room_type | room_no| cost|check_in | check_out
1 | satyawan |ss@gmail.com| xy | AC | R1 |5000 | 2012-12-26|2012-12-30
2 |satyawan | lahu@gmail.com|unr | Non A/C | R6 | 20002012-01-01|2012-12-07
3 |satyawan | lahu@gmail.com|unr | Non A/C | R8 | 2013-01-01 |2013-01-10
4 |satyawan | lahu@gmail.com|unr | Non A/C | R9 | 2013-01-10 |2013-01-16
5 |satyawan | lahu@gmail.com|unr | Non A/C | R6 | 2013-01-01 |2013-01-20
我已经在这两个表的联接上触发查询,以查询未预订房间的排序数据。 查询在下面
SELECT *
FROM rooms
LEFT JOIN customer_booking
ON customer_booking.room_no = rooms.room_no
WHERE customer_booking.client_id IS NULL
OR (customer_booking.check_out >= 2013-01-01
AND customer_booking.check_in >= 2013-01-10)
OR (customer_booking.check_out <= 2013-01-01
AND customer_booking.check_out <= 2013-01-10)
但我只想要未预订房间的数据。 如果房间已经预订,则必须显示该房间在该日期已经预订。
我对此一无所知。
也许您正在寻找NOT IN
。
SELECT * FROM rooms AS r WHERE r.room_no NOT IN (
SELECT cb.room_no FROM customer_booking AS cb WHERE your_checkin_constraints);
尝试使用此查询。 如果最后一个字段room_customer_id
为0,则该房间是空闲的,否则显示保留该房间的customer_id。
SELECT rooms.*,COALESCE(customer_booking.customer_id,0) room_customer_id
FROM rooms
LEFT JOIN customer_booking ON
(customer_booking.room_no = rooms.room_no)
and
(
('2013-01-01' between customer_booking.check_in and customer_booking.check_out)
or
('2013-01-10' between customer_booking.check_in and customer_booking.check_out)
or
(customer_booking.check_in between '2013-01-01' and '2013-01-10')
)
SELECT r.room,case when r.room_no is null then 'Available'
else 'Not Available' end
FROM rooms r
LEFT JOIN customer_booking cb
ON cb.room_no = r.room_no
AND cb.check_out <= cur_date()-1
这样尝试,然后您将获得尚未预订的d个房间
SELECT * FROM room r WHERE
not exists (
SELECT cb.room_no FROM customer_booking cb where cb.room_no=r.room_no);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.