From: Fabian Peters <lists.fabian@e-lumo.com>
To: pgsql-sql@postgresql.org
Subject: UPDATE with WHERE clause on joined table
Date: Fri, 28 Jul 2006 23:24:56 +0200
Message-ID: <B45EBA38-2DFC-45E7-921B-16D52A986E7A@e-lumo.com> (raw)
Hi,
I'm only very rarely using SQL, so please forgive me if I show any
obvious signs of ignorance...
I've got three tables "customer", "address" and "country". I want to
set the "language" attribute on "customer" on rows returned by a
SELECT such as this:
SELECT title, first_names, last_name, email, language,
country.country_name FROM ((customer JOIN address ON customer.eoid =
address.eoid_customer) JOIN country ON address.eoid_country =
country.eoid) WHERE email LIKE '%.es' AND country.country_name =
'SPAIN';
That is, I want to set the "language" to 'Spanish' where the
"customer.email" is like '%.es' and where "country.country_name" is
'SPAIN'.
I've tried all sorts of places to put the JOIN and the WHERE clauses
within the UPDATE statement, but I just don't get it.
I'd be most grateful for any help...
TIA
Fabian
P.S.: One of my sorry attempts looked like this - which updates all
rows in "customer" so I figure the WHERE clause is not where it
should be:
UPDATE customer SET language = 'Spanish' FROM ((customer AS
customer_address JOIN address ON customer_address.eoid =
address.eoid_customer) JOIN country ON address.eoid_country =
country.eoid) WHERE customer.email LIKE '%.es' AND
country.country_name = 'SPAIN');
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: lists.fabian@e-lumo.com
Subject: Re: UPDATE with WHERE clause on joined table
In-Reply-To: <B45EBA38-2DFC-45E7-921B-16D52A986E7A@e-lumo.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox