Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Pelajar Kepunyaan Pelbagai Kelab Menggunakan Hubungan Has-Many-Through SQL?

Bagaimana untuk Mencari Pelajar Kepunyaan Pelbagai Kelab Menggunakan Hubungan Has-Many-Through SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-23 21:21:10335semak imbas

How to Find Students Belonging to Multiple Clubs Using SQL's Has-Many-Through Relationship?

Mengenalpasti Pelajar dalam Pelbagai Kelab dengan Cekap menggunakan Hubungan Has-Many-Through SQL

Panduan ini menunjukkan cara untuk mendapatkan semula pelajar yang tergolong dalam kelab tertentu menggunakan hubungan has-many-through SQL. Kami akan menganggap tiga jadual: student, club dan student_club (jadual gabungan). Matlamatnya adalah untuk mencari pelajar yang menjadi ahli kedua-dua kelab bola sepak (ID 30) dan kelab besbol (ID 50).

Penyelesaian menggunakan pertanyaan SQL yang ringkas dan cekap:

<code class="language-sql">SELECT DISTINCT s.id, s.name
FROM student s
JOIN student_club sc ON s.id = sc.student_id
WHERE sc.club_id = 30
  AND s.id IN (SELECT student_id FROM student_club WHERE club_id = 50);</code>

Pertanyaan ini memanfaatkan subkueri untuk prestasi optimum. Jom pecahkan:

  1. JOIN Klausa: Jadual student dan student_club digabungkan menggunakan student_id untuk memautkan pelajar dengan keahlian kelab mereka.

  2. WHERE Klausa: Klausa ini menapis keputusan. Syarat pertama (sc.club_id = 30) memastikan kami hanya menganggap pelajar dalam kelab bola sepak. Syarat kedua (s.id IN (...)) menggunakan subquery untuk memperhalusi lagi keputusan, termasuk hanya pelajar yang ID mereka turut terdapat dalam jadual student_club untuk kelab besbol (club_id = 50).

Pendekatan ini mengelakkan kerumitan yang tidak perlu dan menggunakan indeks pangkalan data dengan cekap (jika tersedia pada lajur student_id dan club_id) untuk mendapatkan semula hasil yang diingini dengan cepat, walaupun dengan set data yang luas. Kata kunci DISTINCT memastikan setiap pelajar disenaraikan sekali sahaja, walaupun mereka mempunyai berbilang entri dalam jadual student_club.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Pelajar Kepunyaan Pelbagai Kelab Menggunakan Hubungan Has-Many-Through SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn