私はSQLiteデータベースを使って作業しており、建物、部屋、スケジュールされたイベントを記述する3つのテーブルがあります。SQL - スケジュール内の空白を見つける
テーブルは次のようになります。
- 建物(ID、名前)
- 部屋(ID、BuildingID、ナンバー)
- イベント(ID、BuildingID、RoomID、日、s_time、e_time)
すべてのイベントは建物と部屋に関連付けられています。 Day列には、曜日(Aの値が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;
私は、特定の建物のためのすべての部屋を見つけた後、私は、現在進行中のスケジュールされたイベントを持って部屋を削除します。
私はすべての役に立つヒント/コメントをお待ちしております。
> Days列には、週の曜日に対応する素数の積である整数が含まれています(値23は、火曜日にイベントが発生したことを意味し、木曜日は7です)。 3および7の積は21ではありません。私はあなたの方法論に混乱しています。 – stefgosselin
ありがとうございます。 – gjarzab
の近くのdup:http://stackoverflow.com/questions/6018445/get-list-with-start-and-end-values-from-table-of-datetimes –