我正在使用 SQLite 数据库,并且我有三个描述建筑物、房间和预定事件的表。
表格如下所示:
- 建筑物(ID,名称)
- 房间(ID,BuildingID,Number)
- 事件(ID、BuildingID、RoomID、Days、s_time、e_time)
因此,每个事件都与建筑物和房间相关联。Days 列包含一个整数,它是对应于星期几的素数的乘积(值 21 表示事件发生在星期二 = 3 和星期四 = 7)。
我希望找到一种方法来生成特定建筑物中的房间报告,该报告将在接下来的几个小时内开放,以及它们将开放多长时间。
这是我到目前为止所拥有的:
SELECT Rooms.Number
FROM Rooms
INNER JOIN Buildings on ( Rooms.BuildingID = Buildings.ID )
WHERE
Buildings.Name = "BuildingName"
EXCEPT
SELECT Events.RoomID
FROM Events
INNER JOIN Buildings on ( Events.BuildingID = Buildings.ID )
WHERE
Buildings.Name = "BuildingName" AND
Events.days & 11 = 0 AND
time("now", "localtime" BETWEEN events.s_time AND events.e_time;
在这里,我找到特定建筑物的所有房间,然后删除当前正在进行预定活动的房间。
我期待所有有用的提示/评论。