Обсуждение: Complex Update

Поиск
Список
Период
Сортировка

Complex Update

От
John Coryat
Дата:
Problem: I have a table that has a field I want to plug with a value 
from other tables.

I can do it with a perl program and a loop, but want to do it with a 
single SQL statement.

Is there a way to do an update that combines a select statement 
containing a "where" that uses a field from the row to be updated?

I would expect it to look something like this:

update orderheader set total = (select sum(amount) from orderdetail 
where orderdetail.orderno=orderheader.orderno) ;

Any ideas?



Re: Complex Update

От
Richard Huxton
Дата:
On Saturday 03 January 2004 09:20, John Coryat wrote:
> Problem: I have a table that has a field I want to plug with a value
> from other tables.
[snip]
> I would expect it to look something like this:
>
> update orderheader set total = (select sum(amount) from orderdetail
> where orderdetail.orderno=orderheader.orderno) ;

Looks fine to me. In general, you can do something of the form:

UPDATE ta SET a2 = (SELECT expr(b2) FROM tb WHERE b1=a1);

NOTE - make sure you understand what happens when there is no b1=a1 and what 
that will mean to your particular setup.

--  Richard Huxton Archonet Ltd