1
두 가지를 관련시키는 코스, 강사 및 테이블이있는 코스 시스템을 구축 중입니다.여러 개의 조인을 사용하는 MySQL COUNT()
Symplified 테이블 instructors
:
id | name | ...
Symplified 테이블 courses
:
id | name | instructors_needed | ...
Symplified 테이블 link
는 :
id | course_id | instructor_id
나는 관련된 강사의 이름을 가져 오기 위해 다음과 같은 쿼리를 생성 ~에 관절 코스 :
SELECT i.name, c.name, c.instructors_needed FROM courses c
LEFT OUTER JOIN
link
ON c.id = link.course_id
LEFT OUTER JOIN
instructors i
ON link.instructor_id = i.id
잘 작동합니다. 나는 각 코스에 강사의 수를 찾으려면 다음 쿼리를 생성 :
SELECT COUNT(i.name) as number, c.id, c.name, c.instructors_needed FROM courses c
LEFT OUTER JOIN
link
ON c.id = link.course_id
LEFT OUTER JOIN
instructors i
ON link.instructor_id = i.id
GROUP BY c.ID
나는 특별한 경우를위한 강사에 대한 모든 세부 사항을 얻기 위해, 두 개의 쿼리를 결합하려는
뿐만 아니라에 대한 강사의 총 수 코스 및 필요한 강사 수 어떻게해야합니까? 나는 GROUP BY가 여기에서 문제라는 것을 이해한다. 검색했지만 3 대신 2 개의 테이블로만 예제를 찾을 수 있었고, 어떻게 든 3 개의 테이블을 찾을 수 없었습니다.
정말 감사드립니다. 감사합니다.
엄지 손가락의 규칙 : 당신이 해제 집계 필드를 사용의 필요성에 올 때마다 집계들 (열 일명 기능, 계산/합계/평균처럼 합산으로 사용되지 않음), GROUP-BY 문의 집계되지 않은 모든 필드를 나열하십시오. 따라서 대부분의 경우 GROUP BY c.ID, c.name, c.instructors_needed를 작성해야합니다 (물론 이것은 "무능력 해지다"이고 GROUP BY는 HAVING과 함께 여러 가지 유용한 용도가 있습니다) – Najzero
Hello Najzero, 응답 해 주셔서 감사합니다! 나는 당신의 제안을 시도했다. 그러나 이것은 각 코스에 대해 최대 1 명의 강사 이름을 제공한다. 그러나 @Edper의 해결책이 트릭을 만들었습니다. – Jasper