2013-08-27 34 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」字段或類似的東西,這可以是日期或自聯接。無論如何,每個事件應該在每個事件中都有自己的調度條目。

如果這不能回答你的問題,那麼你不清楚你在問什麼。也許你可以澄清?