From: | "Ezra Epstein" <eepstein(at)prajnait(dot)com> |
---|---|
To: | "Marco Lazzeri" <marcomail(at)noze(dot)it>, <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: If table A value IS NULL then table B |
Date: | 2004-01-23 18:59:02 |
Message-ID: | GJEMKNGMHLIGIBLPFHCPEENGCCAA.eepstein@prajnait.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> -----Original Message-----
> From: pgsql-general-owner(at)postgresql(dot)org
> [mailto:pgsql-general-owner(at)postgresql(dot)org]On Behalf Of Marco Lazzeri
> Sent: Friday, January 23, 2004 10:02 AM
> To: pgsql-general(at)postgresql(dot)org
> Subject: [GENERAL] If table A value IS NULL then table B
>
>
> I've got a table called 'main' described as follow
>
> CREATE TABLE main (
> id_other_table INT,
> value CHAR
> );
>
> and a table called 'other' described as follow
>
> CREATE TABLE other (
> id INT PRIMARY KEY,
> value CHAR
> );
>
> I want to write a query on table 'main' that if 'id_other_table' is null
> returns value from itself, from table 'other' otherwise.
>
> Thank you very much, have a wonderful day!
>
> Marco
>
I think this post belongs on the SQL list, not the general list.
Anyway, the SQL you want is:
=$> select COALESCE(other.value, main.value) AS "value" from main left
outer join other ON main.id_other_table = other.id;
For example, given:
insert into main (id_other_table, value) values (NULL, 'M');
insert into main (id_other_table, value) values (1, 'o');
insert into other (id, value) values (1, 'X');
The query returns:
value
-------
M
X
(2 rows)
== Ezra Epstein
From | Date | Subject | |
---|---|---|---|
Next Message | Luke Pond | 2004-01-23 19:06:18 | Re: PostgreSQL and Datawarehouse tools |
Previous Message | Joshua D. Drake | 2004-01-23 18:51:54 | Re: sequence in schema -- broken default |