Re: [GENERAL] Re: sql question

From: Herbert Liechti <Herbert(dot)Liechti(at)thinx(dot)ch>
To: Ed Loehr <ELOEHR(at)austin(dot)rr(dot)com>, postgres <pgsql-general(at)postgreSQL(dot)org>
Subject: Re: [GENERAL] Re: sql question
Date: 1999-11-19 07:06:56
Message-ID: 3834F70F.FB590B95@thinx.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Ed Loehr wrote:

>
> >
> > Create temp table tempGroup(adrGroup_id integer, groupcounter integer);
> > INSERT INTO tempGroup
> > SELECT adrGroup_Id, count(*) FROM adrGroup GROUP BY 1 HAVING COUNT(*) = 1);
> > SELECT * from adrGroup, tempGroup
> > WHERE adrGroup.adrGroup_id = tempGroup.adrGroup_id
> > AND adrGroup.group_id = 7;
> >
> > This is working but without the desired performance :-(
> >
>
> I meant to use Address_Id where I used adrGroup_id. Sorry 'bout that. Try this, it seems to work:
>
> SELECT *
> FROM AddressGroup ag1
> WHERE NOT EXISTS (
> SELECT *
> FROM AddressGroup ag2
> WHERE ag1.Address_Id = ag2.Address_Id AND
> ag1.Group_Id <> ag2.Group_Id);
>
> A working demonstration is below.
>
> Cheers,
> Ed
>
> mydb=> create sequence adrverw_id_seq;
> CREATE
> mydb=> create table AddressGroup
> mydb-> (
> mydb-> AdrGroup_Id INTEGER NOT NULL DEFAULT NEXTVAL('adrverw_id_seq'),
> mydb-> Zeit DATETIME NOT NULL,
> mydb-> Group_Id INTEGER NOT NULL,
> mydb-> Address_Id INTEGER NOT NULL
> mydb-> );
> CREATE
> mydb=> insert into AddressGroup(Zeit,Group_Id,Address_Id) values ('now',5,1);
> NOTICE: adrverw_id_seq.nextval: sequence was re-created
> NOTICE: adrverw_id_seq.nextval: sequence was re-created
> INSERT 3669904 1
> mydb=> insert into AddressGroup(Zeit,Group_Id,Address_Id) values ('now',6,1);
> INSERT 3669905 1
> mydb=> insert into AddressGroup(Zeit,Group_Id,Address_Id) values ('now',6,2);
> INSERT 3669906 1
> mydb=> insert into AddressGroup(Zeit,Group_Id,Address_Id) values ('now',6,3);
> INSERT 3669907 1
> mydb=> insert into AddressGroup(Zeit,Group_Id,Address_Id) values ('now',7,3);
> INSERT 3669908 1
> mydb=>
> mydb=> SELECT * FROM AddressGroup;
> adrgroup_id|zeit |group_id|address_id
> -----------+----------------------------+--------+----------
> 1|Thu Nov 18 18:10:50 1999 CST| 5| 1
> 2|Thu Nov 18 18:10:50 1999 CST| 6| 1
> 3|Thu Nov 18 18:10:50 1999 CST| 6| 2
> 4|Thu Nov 18 18:10:50 1999 CST| 6| 3
> 5|Thu Nov 18 18:10:50 1999 CST| 7| 3
> (5 rows)
>
> mydb=>
> mydb=> SELECT *
> mydb-> FROM AddressGroup ag1
> mydb-> WHERE NOT EXISTS (
> mydb-> SELECT *
> mydb-> FROM AddressGroup ag2
> mydb-> WHERE ag1.Address_Id = ag2.Address_Id AND
> mydb-> ag1.Group_Id <> ag2.Group_Id);
> adrgroup_id|zeit |group_id|address_id
> -----------+----------------------------+--------+----------
> 3|Thu Nov 18 18:10:50 1999 CST| 6| 2
> (1 row)

It is working ;-) Thanks

Herbie

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Herbert Liechti E-Mail: Herbert(dot)Liechti(at)thinx(dot)ch
ThinX networked business services Stahlrain 10, CH-5200 Brugg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Mirko Viviani 1999-11-19 09:06:45 Problems with pg_dump...
Previous Message Ed Loehr 1999-11-19 00:17:54 Re: [GENERAL] Re: sql question