2013-08-27 36 views
0

我有三个日历功能表。 说event表有event_iddescription日历数据库查询与重复间隔功能postgres

event_schedule表有event_idevent_start_dateevent_end_date

event_repeat表具有event_Schedule_idevent_start_date

repeats(它可以是每周,每月,每日,每年)和repeat_every(1,2,3这是间隔)

repeat_on(周一,周二,星期三,etc.sometimes空白)和 其是event_schedule表starts_on(起始日期其同一日期)和ends_never(不断正在进行可) end_occurences(no_of occurence) ends_on是结束日期, event_schedule_id映射到事件计划表和 repeated_by_month是(如果每月这将有助于决定其每月的开始是一周结束) 请找表结构

CREATE TABLE events 
(
    event_id serial NOT NULL, 
    event_name text, 
    city text, 
    description text, 
    active_status text, 
    discount text, 
    user_id integer, 
    inserted_date timestamp without time zone, 
    modified_date timestamp without time zone, 
    state text, 
    CONSTRAINT event_pkey PRIMARY KEY (event_id), 
    CONSTRAINT event_user_id_fkey FOREIGN KEY (user_id) 
     REFERENCES users (user_id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE CASCADE 
) 

CREATE TABLE event_schedules 
(
    schedule_id serial NOT NULL, 
    schedule_mode text, 
    start_date date, 
    end_date date, 
    start_time time without time zone, 
    end_time time without time zone, 
    repeat text, 
    activity_id integer, 
    business_hours text, 
    modified_date timestamp without time zone, 
    CONSTRAINT event_schedules_pkey PRIMARY KEY (schedule_id), 
    CONSTRAINT event_schedules_event_id_fkey FOREIGN KEY (event_id) 
     REFERENCES events (event_id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE CASCADE 
) 


CREATE TABLE event_repeats 
(
    repeat_id serial NOT NULL, 
    repeats text, 
    repeat_every text, 
    repeat_on text, 
    starts_on date, 
    ends_never boolean, 
    end_occurences text, 
    ends_on date, 
    event_schedule_id integer, 
    modified_date timestamp without time zone, 
    repeated_by_month boolean, 
    repeat_week text, 
    CONSTRAINT event_repeats_pkey PRIMARY KEY (repeat_id), 
    CONSTRAINT event_repeats_event_schedule_id_fkey FOREIGN KEY (event_schedule_id) 
     REFERENCES event_schedules (schedule_id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE CASCADE 
) 
+3

请清理你的问题,并使其可读 –

+0

对不起,我希望我可以帮忙,但不能读blob ... –

+3

如果这是“与PostgreSQL”,那么为什么MySQL标签?寻找便携式代码? '如果是这样,当涉及到日期操纵时,祝你好运。为了回答这种问题,我真的希望你的表结构有一些样例数据作为CREATE TABLE和INSERT语句,再加上一些预期的结果。适合粘贴到http://sqlfiddle.com/进行测试/试验的东西。 –

回答

0

我认为你将不得不仅将“重复”时间表用于初始时间安排。事情可能会重新安排,所以你不想依靠它作为权威。定期(可能每月一次?),您可能想要通过并使用该逻辑创建新事件。为了完成这项工作,你必须在计划表中添加一个“most_recent_repeat”字段或类似的东西,这可以是日期或自联接。无论如何,每个事件应该在每个事件中都有自己的调度条目。

如果这不能回答你的问题,那么你不清楚你在问什么。也许你可以澄清?