Вероятно най-простият, най-чистият и най-бързият само за двама ученика :
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;
Не е необходимо да се присъединявате към student
таблица за това изобщо - веднага щом знаете списъка с stud_id
се интересувате.
За произволен брой ученици , запитването на Мартин е по-удобно. Можете да опростите по подобен начин:
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;
Изисква това (stud_id, club_id)
е уникален, разбира се, и елементите от списъка също са уникални.