Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como contar os resultados do MySQL em uma relação de muitos


Provavelmente o mais simples, mais limpo e mais rápido para apenas dois alunos :
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;

Você não precisa se associar ao student table para isso - assim que você souber a lista de stud_id Você está interessado em.

Para qualquer número de alunos , a consulta de Martin é mais conveniente. Você pode simplificar de maneira semelhante:
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;

Requer que (stud_id, club_id) é único, é claro, e os itens da lista também são únicos.