सिर्फ दो छात्रों के लिए . शायद सबसे सरल, सबसे साफ और तेज़ :
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)
बेशक अद्वितीय है, और वह सूची आइटम भी अद्वितीय हैं।