Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana menghitung hasil MySQL dalam relasi has-many-through

Mungkin paling sederhana, terbersih, dan tercepat hanya untuk dua siswa :

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;

Anda tidak perlu bergabung dengan student tabel untuk ini sama sekali - segera setelah Anda mengetahui daftar stud_id Anda tertarik.

Untuk sejumlah siswa , Permintaan Martin lebih nyaman. Anda dapat menyederhanakan dengan cara yang sama:

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;

Memerlukan (stud_id, club_id) unik tentu saja, dan item daftar itu juga unik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jalankan 2 kueri sql dengan 1 kueri untuk menyimpan hasil kueri sebagai format .csv

  2. Mendapatkan jumlah baris dan data dari baris itu dalam satu kueri menggunakan PDO di PHP

  3. Alur kerja DDL transaksional untuk MySQL

  4. MySQL kiri luar bergabung dengan klausa mana - kembalikan baris yang tidak cocok

  5. Model Django tunggal, banyak tabel?