From: | Mischa Sandberg <ischamay(dot)andbergsay(at)activestateway(dot)com> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: SQL Question |
Date: | 2004-11-19 19:23:43 |
Message-ID: | 419E4A4C.9010307@activestateway.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Igor Kryltsov wrote:
> We have table
> create table group_facility (
> group_id integer not null,
> facility_id integer not null
> )
> It stores facilities membership in group. For example: "North Region" -
> facilityA, facilityB
> I need to extract groups from this table which contain facilityN AND
> facilityZ and may be others but these two(both) has to be a group member.
>
> Query:
> SELECT DISTINCT group_id FROM facility_group s1
> WHERE EXISTS (SELECT 1 FROM facility_group s2 WHERE s2.group_id =
> s1.group_id AND facility_id = 390)
> AND
> EXISTS (SELECT 1 FROM facility_group s2 WHERE s2.group_id = s1.group_id AND
> facility_id = 999)
>
> works but what if I need to find groups where membership is (facilityN1,
> ....facilityN100)??
Okay: suppose you have
table my_facilities(facility_id integer)
--- your facilityN1...facilityN100
SELECT group_id
FROM facility_group s1
JOIN my_facilities s2 USING(facility_id)
GROUP BY group_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM my_facilities)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-11-19 20:01:42 | Re: NULLS and string concatenation |
Previous Message | Stephan Szabo | 2004-11-19 19:04:18 | Re: NULLS and string concatenation |