Re: UNION with more restrictive DISTINCT - Mailing list pgsql-general

From Vincent Hikida
Subject Re: UNION with more restrictive DISTINCT
Date
Msg-id 004e01c4e63f$4cd6a500$6501a8c0@HOMEOFFICE
Whole thread Raw
In response to UNION with more restrictive DISTINCT  (peter pilsl <pilsl@goldfisch.at>)
List pgsql-general
Oops. That statement will "prefer" the t1.name instead of t2.name. It should
be COALESCE(t2.name,t1.name)

Another option is:

SELECT t2.id
             , t2.name
     FROM t2
UNION
SELECT t1.id
             , t1.name
    FROM t2
  WHERE NOT EXISTS
                 (SELECT NULL
                     FROM t1 JOIN t2 ON t1.id = t2.id
                 )


----- Original Message -----
From: "Vincent Hikida" <vhikida@inreach.com>
To: "peter pilsl" <pilsl@goldfisch.at>; "PostgreSQL List"
<pgsql-general@postgresql.org>
Sent: Saturday, December 18, 2004 12:40 AM
Subject: Re: [GENERAL] UNION with more restrictive DISTINCT


> One solution is
>
> SELECT COALESCE(t1.id,t2.id)
>             ,  COALESCE(t1.name,t2.name)
>    FROM t1 FULL JOIN t2  ON t1.id = t2.id
>
>
> ----- Original Message -----
> From: "peter pilsl" <pilsl@goldfisch.at>
> To: "PostgreSQL List" <pgsql-general@postgresql.org>
> Sent: Wednesday, December 15, 2004 1:03 PM
> Subject: [GENERAL] UNION with more restrictive DISTINCT
>
>
>>
>> I'd like to UNION two queries but the distinct-criteria for UNION should
>> not be all columns in the queries, but only one.
>>
>> example. two tables:
>>
>> test=# select id,name from t1;
>>  id | name
>> ----+------
>>   1 | bob
>>   2 | mike
>> (2 rows)
>>
>> test=# select id,name from t2;
>>  id |  name
>> ----+---------
>>   1 | bob
>>   2 | mike j.
>> (2 rows)
>>
>>
>> # select id,name from t1 union select id,name from t2;
>>  id |  name
>> ----+---------
>>   1 | bob
>>   2 | mike
>>   2 | mike j.
>> (3 rows)
>>
>>
>> now I want a construct that returns me only one row for each id. If there
>> are different names for that id's in the different tables, the name of t2
>> should be chosen.
>>
>> like:
>>
>> # select id,name from t1 UNION ON (id) AND SUPERMAGICPREFER (t2.name)
>> select id,name from t2;
>>  id |  name
>> ----+---------
>>   1 | bob
>>   2 | mike j.
>> (2 rows)
>>
>>
>> What is an appropriate approach to this? If I use my UNION-query as
>> subquery for a SELECT DISTINCT ID, I loose the name, which is important.
>>
>> thnx.
>> peter
>>
>>
>>
>> --
>> mag. peter pilsl
>> goldfisch.at
>> IT-management
>> tel +43 699 1 3574035
>> fax +43 699 4 3574035
>> pilsl@goldfisch.at
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 3: if posting/reading through Usenet, please send an appropriate
>>      subscribe-nomail command to majordomo@postgresql.org so that your
>>      message can get through to the mailing list cleanly
>>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>      subscribe-nomail command to majordomo@postgresql.org so that your
>      message can get through to the mailing list cleanly
>


pgsql-general by date:

Previous
From: Ragnar Hafstað
Date:
Subject: Re: Multi row sequence?
Next
From: "Jim C. Nasby"
Date:
Subject: Re: Scheduler in Postgres