Wahrscheinlich am einfachsten, saubersten und schnellsten für nur zwei Schüler :
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;
Sie müssen dem student
nicht beitreten Tabelle dafür überhaupt - sobald Sie die Liste von stud_id
kennen Sie interessiert sind.
Für beliebig viele Schüler , Martins Abfrage ist bequemer. Sie können auf ähnliche Weise vereinfachen:
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;
Erfordert diesen (stud_id, club_id)
ist natürlich einzigartig, und diese Listenelemente sind auch einzigartig.