| From: | Gábriel Ákos <akos(dot)gabriel(at)i-logic(dot)hu> | 
|---|---|
| To: | pgsql-sql(at)postgresql(dot)org | 
| Subject: | Re: Update question | 
| Date: | 2006-03-28 17:34:23 | 
| Message-ID: | 4429739F.6020205@i-logic.hu | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-sql | 
Markus Schaber wrote:
> Hi, Fay,
> 
> Fay Du wrote:
>> Table cost
>>
>> Id  edge_id    cost
>> 1       30         101.4
>> 2       30          null
>> 3       40          500.2
>> 4       40           null
>> 5        45          300.7
>> 6        45           null
> 
>> I want to set cost value with same edge_id by same value. The existing
>> values are calculated by calling a function (calculate edge length). I
>> can calculate the value by same function, but the function was slow. I
>> wander if I can use update statement to set the second value with same
>> edge_id. Thanks in advance for your help.
> 
> It should go like:
> 
> UPDATE cost SET edge_id = (SELECT cost FROM cost innr WHERE innr.edge_id
> = edge_id AND innr.cost is not null) WHERE cost is null;
> 
> HTH,
> Marku
> 
This is ok, but this is redundant, i guess. you should put edge_id and
cost into another table and use join to retrieve cost for each id.
put a key on edge_id, most likely a primary (unique) key.
-- 
Üdvözlettel,
Gábriel Ákos
-=E-Mail :akos(dot)gabriel(at)i-logic(dot)hu|Web:  http://www.i-logic.hu=-
-=Tel/fax:+3612367353            |Mobil:+36209278894            =-
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fay Du | 2006-03-28 18:33:02 | Re: Update question | 
| Previous Message | Markus Schaber | 2006-03-28 16:51:55 | Re: Update question |