Förmodligen enklast, renaste och snabbaste för bara två elever :
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;
Du behöver inte gå med i student
tabell för detta överhuvudtaget - så snart du känner till listan över stud_id
du är intresserad av.
För valfritt antal elever , Martins fråga är bekvämare. Du kan förenkla på liknande sätt:
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;
Kräver att (stud_id, club_id)
är unikt såklart, och listobjekten är också unika.