> Date: Wed, 17 Nov 1999 20:53:33 +0100
> From: Herbert Liechti <Herbert.Liechti@thinx.ch>
> Subject: sql question
>
> I have a sql problem which I can't solve. The following table is defined
>
> create table AdressGroup
> (
> AdrGroup_Id INTEGER NOT NULL
> DEFAULT NEXTVAL('adrverw_id_seq'),
> Zeit DATETIME NOT NULL,
> Group_Id INTEGER NOT NULL,
> Adress_Id INTEGER NOT NULL
> );
>
> The table assigns adresses to adressgroups.
>
> I'd like to select the adresses which belongs to one specific adressGroup and to no other group. If an adress has
morethan one entry in the AdressGroup
> table it should not be in the projection.
>
> I tried the following:
>
> SELECT * FROM adressGroup
> WHERE Group_Id = 6
> AND EXISTS( SELECT AdrGroup_Id FROM adressGroup ag_alias
> WHERE adressGroup.AdrGroup_Id = ag_alias.AdrGroup_Id
> GROUP BY AdrGroup_Id HAVING COUNT(*) == 1 );
>
> When I do this I get the following error:
> ERROR: rewrite: aggregate column of view must be at rigth side in qual
> ERROR: rewrite: aggregate column of view must be at rigth side in qual
>
> Does anybody knows the solution? Thanks
>
Not sure about the error above, other than the apparent typos with "adressGroup", but I think you can get what you're
afterwith this:
SELECT *
FROM AdressGroup ag
WHERE ag.Group_Id = 6 AND NOT EXISTS (
SELECT AdrGroup_Id
FROM AddressGroup ag2
WHERE ag2.AdrGroup_Id = ag.AdrGroup_Id AND ag2.Group_Id <> 6);
Hope that helps.
Ed