客房可用性和分配

时间:2015-11-04 01:08:56

标签: php mysql

我正在研究房间预订系统,系统假设在将用户分配到房间之前检查房间是否已满。 我想通过高效的mysql查询随机地将用户预订到一个房间。

我有两张桌子

Rooms Details
rID     |   Room Number     |   No of persons   |
 1      |   Room23          |       2           |
 2      |   Room24          |       1           |


Allocated Users

rID*    |   user Name   |
 1      |     manueis   |

如何检查room23是否留给某人,然后将下一位用户设置为房间。

1 个答案:

答案 0 :(得分:0)

这实际上取决于您希望返回结果集的样子。

要获得房间以及“已分配用户”的数量,您可以运行这样的查询。

HAVING r.no_of_persons > COUNT(p.rid)

如果要排除已经具有不小于房间“no_of_persons”数量的“allocated_user”的行,您可以添加一个HAVING子句......

ORDER BY

对于该结果的排序,您可以添加ORDER BY r.no_of_persons - COUNT(p.rid) ASC , r.no_of_persons DESC 子句。首先获得“最充分”的房间,最大的“no_of_persons”

RAND()

或者,正如您的问题所示,如果您希望以伪随机方式排序这些行,您可以(低效)使用ORDER BY RAND() 函数......

LIMIT 1

(这可能效率低下,因为必须为返回的每一行计算RAND()函数,然后所有行都必须按该函数返回的值进行排序。

如果您只想返回一行,可以添加LIMIT子句......

{{1}}