Re: Need Help for select
От | Andre Schubert |
---|---|
Тема | Re: Need Help for select |
Дата | |
Msg-id | 20020819073142.4b714fcf.andre@km3.de обсуждение исходный текст |
Ответ на | Re: Need Help for select (Masaru Sugawara <rk73@sea.plala.or.jp>) |
Список | 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 по дате отправления: