이 가이드에서는 SQL의 has-many-through 관계를 사용하여 특정 클럽에 속한 학생을 검색하는 방법을 보여줍니다. student
, club
, student_club
(조인 테이블)의 세 가지 테이블을 가정하겠습니다. 축구부(ID 30)와 야구부(ID 50)에 모두 소속된 학생을 찾는 것이 목표입니다.
이 솔루션은 간결하고 효율적인 SQL 쿼리를 사용합니다.
<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>
이 쿼리는 최적의 성능을 위해 하위 쿼리를 활용합니다. 분석해 보겠습니다.
JOIN
조항: student
및 student_club
테이블은 student_id
을 사용하여 결합되어 학생들을 클럽 멤버십에 연결합니다.
WHERE
절: 이 절은 결과를 필터링합니다. 첫 번째 조건(sc.club_id = 30
)은 축구부 학생만 고려하도록 보장합니다. 두 번째 조건(s.id IN (...)
)은 하위 쿼리를 사용하여 야구 클럽(club_id = 50)의 student_club
테이블에도 ID가 있는 학생만 포함하여 결과를 더욱 구체화합니다.
이 접근 방식은 불필요한 복잡성을 피하고 데이터베이스 인덱스(student_id
및 club_id
열에서 사용 가능한 경우)를 효율적으로 활용하여 광범위한 데이터 세트가 있는 경우에도 원하는 결과를 빠르게 검색합니다. DISTINCT
키워드를 사용하면 student_club
테이블에 여러 항목이 있더라도 각 학생이 한 번만 나열됩니다.
위 내용은 SQL의 Has-Many-Through 관계를 사용하여 여러 클럽에 속한 학생을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!