Re: Need Help for select - Mailing list pgsql-sql

From Andre Schubert
Subject Re: Need Help for select
Date
Msg-id 20020819073142.4b714fcf.andre@km3.de
Whole thread Raw
In response to Re: Need Help for select  (Masaru Sugawara <rk73@sea.plala.or.jp>)
List pgsql-sql
On Thu, 15 Aug 2002 11:17:15 +0900
"Masaru Sugawara" <rk73@sea.plala.or.jp> wrote:

> On Wed, 14 Aug 2002 16:04:21 +0200
> Andre Schubert <andre@km3.de> wrote:
> 
> 
> > I want to compare if a tuple in c exist in b for each c.d_id and b.a_id.
> > In c exists 3 tuples: (1,2), (3,4), (5)
> > and want to find these tuples in b.
> 
> 
> Probably I would think I have reached the correct query. Table b and c,
> however, must have unique indices like the following in order to get the
> result by using it, because it pays no attention to the duplicate keys.
> If there are no primary keys, it will become more complicated for eliminating
> duplicate keys. 
> 
> 
> create table b (
> a_id int,
> c_id int,
> constraint p_key_b primary key(a_id, c_id)
> );
> create table c (
> b_id int,
> d_id int,
> constraint p_key_c primary key(b_id, d_id)
> );
> 
> 
> SELECT a.name, d.name
> FROM (SELECT t2.a_id, t2.d_id
>         FROM (SELECT b.a_id, t1.d_id, t1.n
>                   FROM (SELECT c.b_id, c.d_id, t0.n
>                           FROM c, (SELECT d_id, COUNT(*) AS n
>                                      FROM c GROUP BY d_id) AS t0
>                          WHERE c.d_id = t0.d_id
>                        ) AS t1
>                        LEFT OUTER JOIN b ON (t1.b_id = b.c_id)
>                WHERE b.a_id IS NOT NULL
>               ) AS t2
>         GROUP BY t2.a_id, t2.d_id, t2.n
>        HAVING COUNT(*) = t2.n
>      ) AS t3,
>      a,
>      d
> WHERE a.id = t3.a_id
>   AND d.id = t3.d_id
> 

After days of studying this query and hours of testing i would say this query works for me very well.
Thank you very very much.

> 
> 
> Regards,
> Masaru Sugawara
> 
> 
> 
> ---------------------------(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-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: Ordering with GROUPs
Next
From: "Sugandha Shah"
Date:
Subject: Re: Few Queries