【发布时间】:2011-05-27 15:46:13
【问题描述】:
我正在使用 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;
我在此处找到特定建筑物的所有房间,然后删除当前正在进行预定活动的房间。
我期待所有有用的提示/cmets。
【问题讨论】:
-
>Days 列包含一个整数,它是对应于星期几的素数的乘积(值 23 表示事件发生在星期二 = 3 和星期四 = 7)。 3和7的乘积不是21吗?我对你的方法感到困惑。
-
是的,感谢您了解这一点。
标签: sql sqlite gaps-and-islands