Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak liczyć wyniki MySQL w relacji typu ma wiele?

Prawdopodobnie najprostszy, najczystszy i najszybszy tylko dla dwóch uczniów :

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;

Nie musisz dołączyć do student tabela dla tego w ogóle - jak tylko poznasz listę stud_id jesteś zainteresowany.

Dla dowolnej liczby uczniów , zapytanie Martina jest wygodniejsze. Możesz uprościć w podobny sposób:

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;

Wymaga (stud_id, club_id) jest oczywiście unikalny, a elementy listy są również niepowtarzalne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj plik fbk (firebird) na MySql

  2. SQL Liczba wierszy

  3. Nie można zalogować się do mysql 5.7.9 po zmianie hasła

  4. PDO::FETCH_CLASS z wieloma klasami

  5. zamień dokładne dopasowanie w php