I forgot the attachement :)
On 6/6/07, Loredana Curugiu <[EMAIL PROTECTED]> wrote:
I found my problem. I attaches an .sql file with my tables, data
and my new query. If you are interested you can take a look.
Thanks to all.
Regards,
Loredana
CREATE TABLE reminder_services (
uid SERIAL,
theme_uid INT NOT NULL,
activity_MT_amount INT NOT NULL,
activity_min_days INT NOT NULL,
activity_max_months INT NOT NULL,
CONSTRAINT pk_reminder_services PRIMARY KEY(uid),
CONSTRAINT un_reminder_services_theme UNIQUE(theme_uid) );
CREATE TABLE themes (
uid SERIAL PRIMARY KEY,
theme VARCHAR(25) UNIQUE NOT NULL );
CREATE TABLE sent_messages (
uid SERIAL PRIMARY KEY,
receiver VARCHAR(25),
theme VARCHAR(25),
date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP );
COPY reminder_services FROM stdin WITH DELIMITER '|';
5 | 6 | 3 | 6 | 1
6 | 7 | 4 | 5 | 1
\.
COPY themes FROM stdin WITH DELIMITER '|';
6 | CRISTI
7 | LIA
\.
COPY sent_messages FROM stdin WITH DELIMITER '|';
62 | +40741775622 | CRISTI | 2007-06-04 07:44:45.406271+00
70 | +40741775622 | CRISTI | 2007-06-04 07:45:01.788533+00
71 | +40741775622 | CRISTI | 2007-06-04 07:45:03.764506+00
80 | +40741775621 | LIA | 2007-06-04 07:45:26.309215+00
81 | +40741775621 | LIA | 2007-06-04 07:45:28.314075+00
63 | +40741775622 | CRISTI | 2007-06-03 07:44:00+00
64 | +40741775622 | CRISTI | 2007-06-02 07:44:00+00
65 | +40741775622 | CRISTI | 2007-06-01 07:44:00+00
66 | +40741775622 | CRISTI | 2007-06-01 07:44:00+00
67 | +40741775622 | CRISTI | 2007-06-01 07:44:00+00
68 | +40741775622 | CRISTI | 2007-04-01 07:44:00+00
69 | +40741775622 | CRISTI | 2007-05-01 07:44:00+00
72 | +40741775621 | LIA | 2007-06-03 07:44:00+00
73 | +40741775621 | LIA | 2007-06-03 07:44:00+00
74 | +40741775621 | LIA | 2007-06-02 07:44:00+00
75 | +40741775621 | LIA | 2007-06-02 07:44:00+00
76 | +40741775621 | LIA | 2007-06-01 07:44:00+00
77 | +40741775621 | LIA | 2007-06-01 07:44:00+00
78 | +40741775621 | LIA | 2007-06-01 07:44:00+00
79 | +40741775621 | LIA | 2007-06-01 07:44:00+00
\.
SELECT SUM(B.count),
A.theme,
A.receiver,
A.dates
FROM ( SELECT DISTINCT COUNT(*),
sent_messages.theme,
receiver,
ARRAY(SELECT date::date + s.a FROM generate_series(0,activity_min_days) AS s(a)) AS dates
FROM reminder_services, themes,sent_messages
WHERE themes.uid=reminder_services.theme_uid
AND TRIM(sent_messages.theme)=TRIM(themes.theme)
AND date_trunc('day',sent_messages.date) > (now() - reminder_services.activity_max_months * INTERVAL' 1 month')
GROUP BY sent_messages.theme, receiver, date, activity_min_days ) A
INNER JOIN ( SELECT COUNT(*),
sent_messages.theme,
receiver,
date_trunc('day',sent_messages.date) AS date
FROM reminder_services, themes,sent_messages
WHERE themes.uid=reminder_services.theme_uid
AND TRIM(sent_messages.theme)=TRIM(themes.theme)
AND date_trunc('day',sent_messages.date) > (now() - reminder_services.activity_max_months * INTERVAL' 1 month')
GROUP BY sent_messages.theme, receiver, date, activity_min_days ) B
ON A.theme=B.theme
AND A.receiver=B.receiver
AND B.date=ANY (A.dates)
GROUP BY A.theme, A.receiver, A.dates;
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster