我现在正在创建一个新的预订系统,私人房间的一部分已经完成,我现在有了宿舍(共享室)的一部分。
该系统的工作方式如下:
现在我想做下一件事:如果有两个宿舍。所有这些都有10个人。他们都有10岁的8人,现在有4人想登记。它不会给他们因为它检查宿舍..。我想这样做,系统将计算免费名额(有10-8 + 10-8 =4在两个宿舍)。有想法吗?
我的英语不是很好,我希望你能理解我,非常感谢!
编辑:
当我在数据库中添加宿舍时:
ID | room_type| persons | dates
------------------------------------------------------------------------
X | Dorm |How many the dorm contain. not change.| of persons coming
如果你有5次约会,那么这一天宿舍里有5个人。例如。
发布于 2010-08-05 10:17:24
好的,我在内存中输入这个,所以它可能需要一些微调,但它应该起到指导作用。希望能帮上忙。
1)首先,让我们创建一个临时表,在每个日期存储任意给定房间的所有固定位置:
CREATE TEMPORARY TABLE room_availability
SELECT ID, DISTINCT dates, COUNT(dates) as full_slots FROM table
WHERE UNIX_TIMESTAMP(CAST(dates AS DATE)) - UNIX_TIMESTAMP(NOW()) > 0
GROUP BY dates ORDER BY ID;
2)让我们为任何房间找出所有可用的空位:
SELECT table.*, table.persons - room_availability.full_slots as free_slots
FROM table INNER JOIN room_availability ON table.ID = room_availability.ID
where table.persons - room_availability.full_slots > 0
最后,去掉临时表,你就完成了
PS: unix时间戳是用来帮助您列出未来日期的。
https://stackoverflow.com/questions/3413045
复制相似问题