我有问题写mysql选择查询,我可以在时间段获得免费座位数。
让我定义我的问题用户mysql查询:
假设我有一个表restaurant_booking
。
如果餐厅中有 25 个席位且一个用户想要在下午2:00到下午4:00之间 15 座位怎么在这个时候检查预订表有很多座位吗?
如果我看到此预订表,在此时段之前已经预订了 20 个座位,那么我应该如何才能获得5个座位?
如果有人有任何想法,请告诉我。感谢。
答案 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
减去25
,query
以上将会显示当前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替换为您的值 如果它对您有用,请告诉我