Probablement le plus simple, le plus propre et le plus rapide pour seulement deux étudiants :
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;
Vous n'avez pas besoin de rejoindre l'student
table pour cela - dès que vous connaissez la liste des stud_id
vous intéresse.
Pour n'importe quel nombre d'étudiants , la requête de Martin est plus pratique. Vous pouvez simplifier de la même manière :
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;
Nécessite que (stud_id, club_id)
est unique bien sûr, et que les éléments de la liste sont également uniques.