Sandsynligvis den enkleste, reneste og hurtigste for kun to 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 ikke at slutte dig til student
tabel for dette overhovedet - så snart du kender listen over stud_id
du er interesseret i.
For et vilkårligt antal elever , Martins forespørgsel er mere praktisk. Du kan forenkle på en lignende måde:
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 det (stud_id, club_id)
er selvfølgelig unik, og at listeelementer også er unikke.