Waarschijnlijk de eenvoudigste, schoonste en snelste voor slechts twee studenten :
SELECT count(*) AS ct
FROM student_club x
JOIN student_club y USING (stud_id)
WHERE x.club_id = 30
AND y.club_id = 50;
Je hoeft niet lid te worden van de student
tabel hiervoor helemaal niet - zodra u de lijst met stud_id
. kent waarin u geïnteresseerd bent.
Voor willekeurig aantal studenten , Martin's vraag is handiger. U kunt op een vergelijkbare manier vereenvoudigen:
SELECT count(*) AS ct
FROM (
SELECT stud_id
FROM student_club
WHERE club_id IN (30, 50)
GROUP BY 1
HAVING count(*) = 2 -- adapt to number of items in list
) x;
Vereist dat (stud_id, club_id)
is natuurlijk uniek, en die lijstitems zijn ook uniek.