获取餐厅剩余座位的Mysql查询

时间:2013-07-10 09:55:15

标签: mysql

我有问题写mysql选择查询,我可以在时间段获得免费座位数。

让我定义我的问题用户mysql查询:

假设我有一个表restaurant_booking

enter image description here

如果餐厅中有 25 个席位且一个用户想要在下午2:00到下午4:00之间 15 座位怎么在这个时候检查预订表有很多座位吗?

如果我看到此预订表,在此时段之前已经预订了 20 个座位,那么我应该如何才能获得5个座位?

如果有人有任何想法,请告诉我。感谢。

3 个答案:

答案 0 :(得分:1)

逻辑如下:

SELECT (25-SUM(booked_seat)) FROM rest_booking 
WHERE end_booking_time>2 
AND
start_booking_time<4
--2 & 4 are the new customer's start&end booking time

但我同意@Jesbus,日期应存储为时间戳。

答案 1 :(得分:1)

尝试

select
    sum(booked_seat) as seatsAva
from
    restaurant_booking
where 
    STR_TO_DATE(end_booking_time,'%r') < DATE_FORMAT(NOW(), '%r')

之后你可以从seatsAva减去25query以上将会显示当前unavailable个席位数的结果

答案 2 :(得分:0)

这应该可以解决问题(授予你的列是日期或unix时间戳):

SELECT (25-SUM(booked_seat)) AS free_seats 
FROM restaurant_booking 
WHERE 
(end_booking_time>start_time_of_desired_booking AND end_booking_time<=end_time_of_desired_booking)
OR 
(start_booking_time>=start_time_of_desired_booking AND 
start_booking_time<end_time_of_desired_booking)

将start_time_of_desired_booking和end_time_of_desired_booking替换为您的值 如果它对您有用,请告诉我