Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie MySQL-Ergebnisse in einer Has-Viele-Durch-Beziehung gezählt werden

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.