7

我在编写 mysql 选择查询时遇到问题,我可以在其中获得时间段内的空闲座位数。

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

假设我有一张桌子restaurant_booking

在此处输入图像描述

如果餐厅总共有25个座位​​,而一位用户想要在下午 2:00 至下午 4:00 之间有15 个座位​​,如何在预订表中登记到此时有多少座位可用?

如果我看到这个预订表有20个座位已经预订到这个时间段,那么我应该如何才能得到只有 5 个座位​​可用?

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

4

3 回答 3

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,日期应该存储为时间戳。

于 2013-07-10T10:09:28.377 回答
1

尝试

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

之后你可以减去seatsAvafrom 25, 上面query会给你当前unavailable座位数的结果

于 2013-07-10T10:11:51.247 回答
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 让我知道它是否适合您

于 2013-07-10T10:42:52.807 回答