Provavelmente o mais simples, mais limpo e mais rápido para apenas dois alunos :
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;
Você não precisa se associar ao
student
table para isso - assim que você souber a lista de stud_id
Você está interessado em. Para qualquer número de alunos , a consulta de Martin é mais conveniente. Você pode simplificar de maneira semelhante:
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;
Requer que
(stud_id, club_id)
é único, é claro, e os itens da lista também são únicos.