キャッシュテーブルに格納されているイベントの名前を結合するこのクエリがあります。
SELECT OccurrenceCache.occurrence_date, CalendarItem.summary FROM OccurrenceCache
INNER JOIN CalendarItem ON CalendarItem.ROWID = OccurrenceCache.event_id
WHERE OccurrenceCache.occurrence_date >= (strftime('%s', 'now', 'localtime', 'start of day') - strftime('%s', '2001-01-01', 'start of day')) AND OccurrenceCache.occurrence_end_date <= (strftime('%s', 'now', 'localtime', 'start of day') - strftime('%s', '2001-01-01', 'start of day') + 24 * 60 * 60);
ここで、 Locationという名前のテーブルに格納されているイベントのロケーションデータも含めたいと思います。場所のエントリはCalendarItem.location_idによって参照されます(0は場所が指定されていないことを意味します)。別のJOINステートメントで試しましたが、機能しません。
SELECT OccurrenceCache.occurrence_date, CalendarItem.summary, Location.title FROM OccurrenceCache
INNER JOIN CalendarItem ON CalendarItem.ROWID = OccurrenceCache.event_id
INNER JOIN Location ON Location.ROWID = CalendarItem.location_id
WHERE OccurrenceCache.occurrence_date >= (strftime('%s', 'now', 'localtime', 'start of day') - strftime('%s', '2001-01-01', 'start of day')) AND OccurrenceCache.occurrence_end_date <= (strftime('%s', 'now', 'localtime', 'start of day') - strftime('%s', '2001-01-01', 'start of day') + 24 * 60 * 60);
0の結果を返します。