From: | Michael J Davis <michael(dot)j(dot)davis(at)tvguide(dot)com> |
---|---|
To: | "'M Simms'" <grim(at)argh(dot)demon(dot)co(dot)uk>, pgsql-sql(at)postgreSQL(dot)org |
Subject: | RE: [SQL] Update problem I cannot work out |
Date: | 1999-05-02 03:13:16 |
Message-ID: | 93C04F1F5173D211A27900105AA8FCFC145461@lambic.prevuenet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Try something like:
Create function new_function(value_data_type)
'Select sum(t1.var1) from t1 where t1.var2 = $1' LANGUAGE
'sql';
update t2 set var1=t2.var1+new_function(t2.var2);
-----Original Message-----
From: M Simms [SMTP:grim(at)argh(dot)demon(dot)co(dot)uk]
Sent: Saturday, May 01, 1999 8:26 PM
To: pgsql-sql(at)postgreSQL(dot)org
Subject: [SQL] Update problem I cannot work out
I cannot work out how to do the following query
testdb=> select * from t1;
var1|var2
----+----
1| 2
2| 2
2| 3
(3 rows)
testdb=> select * from t2;
var1|var2
----+----
5| 2
9| 3
4| 4
(3 rows)
I need to add to the value of each var1 in t2 the sum of all var1's
in t1
that have the same value corresponding var2's
testdb=> update t2 set var1=t2.var1+sum(t1.var1) where
t1.var2=t2.var2;
ERROR: parser: illegal use of aggregates or non-group column in
target list
I imagine that this is failing because it isnt sure which values to
sum(), but I cannot for the life of me figure out how to solve this.
My second idea was to do
testdb=> update t2 set var1=t2.var1+t1.var1 where t2.var2=t1.var1;
NOTICE: Non-functional update, only first update is performed
UPDATE 1
This will only, obviously, add one of the values I need to add.
The values I need to end up with, just so you know you are solving
the
right problem, are:
testdb=> select * from t1;
var1|var2
----+----
1| 2
2| 2
2| 3
(3 rows)
testdb=> select * from t2;
var1|var2
----+----
8| 2
11| 3
4| 4
(3 rows)
Any help on this would be appreciated. I am a bit stuck here, and I
am
sure I am just missing something blindingly obvious.
I am loathe to use a cursor to do this, because my actual dataset is
upwards of 10,000 records, and I do not wish to do 10,000 different
queries.
From | Date | Subject | |
---|---|---|---|
Next Message | Chris Bitmead | 1999-05-02 09:02:08 | Re: [SQL] INSERT and UPDATE with non-atomic values |
Previous Message | Martin Jackson | 1999-05-02 03:03:38 | INSERT and UPDATE with non-atomic values |