sql >> Databáze >  >> RDS >> Mysql

Jak počítat výsledky MySQL ve vztahu has-many-through

Pravděpodobně nejjednodušší, nejčistší a nejrychlejší jen pro dva studenty :

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;

Nemusíte se připojovat ke student tabulka pro toto vůbec - jakmile budete znát seznam stud_id máte zájem.

Pro libovolný počet studentů , Martinův dotaz je pohodlnější. Můžete to zjednodušit podobným způsobem:

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;

Vyžaduje (stud_id, club_id) je samozřejmě jedinečný a položky seznamu jsou také jedinečné.



  1. MySQL získá náhodnou hodnotu mezi dvěma hodnotami

  2. Průvodce funkcemi PubNub

  3. Jak mohu automaticky převést MySQL DDL na Oracle DDL?

  4. Aktualizujte MySQL:java.sql.SQLException:Pro parametr 8 nebyla zadána žádná hodnota