Re: SQL Question
От | Mischa Sandberg |
---|---|
Тема | Re: SQL Question |
Дата | |
Msg-id | 419E4A4C.9010307@activestateway.com обсуждение исходный текст |
Ответ на | SQL Question ("Igor Kryltsov" <kryltsov@yahoo.com>) |
Список | 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 havetable 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)
В списке pgsql-sql по дате отправления: