2009-07-29 6 views
0

MySQL 데이터베이스, 코스 및 세션에 두 개의 테이블이 있습니다. 나는 매달 각 과정을위한 세션의 항목을 요약하려고합니다.두 번째 테이블에 관련 행이 없을 때 조인을 제한하는 방법

나는 각 코스에 대한 전체 세션을 요약 할 수 있습니다,이 쿼리를 사용하여 아무 문제 없습니다 :

문제는 내가 후이를 추가하여 같은 쿼리를 제한하려고, 그래서 만약 모든 과정이 세션을 가지고있다
SELECT courses.CourseID, 
    SUM(IF(sessions.Duration IS NULL , 0, sessions.Duration)) AS Hrs 
    FROM courses 
    LEFT JOIN sessions ON courses.CourseID = sessions.CourseID 
    WHERE courses.TrainerID = 113 
    GROUP BY courses.CourseID 

WHERE 절은 :

AND sessions.SessionDate >= '2009-06-01' AND sessions.SessionDate <= '2009-06-30' 

난 단지 세션이 과정을 얻을,하지만 내가 원하는 세션없이 코스는 내가 그 자체 만드는 희망 0

을 보여주는 것입니다 nse.

아무도 도와 줄 수 있습니까? 감사.

답변

2

조인 조건에 조건을 추가 ... 또한

SELECT courses.CourseID,  
    SUM(IF(sessions.Duration IS NULL , 0, sessions.Duration)) AS Hrs  
FROM courses 
    LEFT JOIN sessions 
    ON courses.CourseID = sessions.CourseID 
     And sessions.SessionDate 
       Between '2009-06-01' And '2009-06-30' 
Where courses.TrainerID = 113  
GROUP BY courses.CourseID 

, MySQL이 병합 연산자를해야합니까? 그렇다면 다음으로 변경할 수 있습니다.

SELECT courses.CourseID,  
    SUM(Coalesce(sessions.Duration, 0)) AS Hrs  
FROM courses 
    LEFT JOIN sessions 
    ON courses.CourseID = sessions.CourseID 
     And sessions.SessionDate 
       Between '2009-06-01' And '2009-06-30' 
Where courses.TrainerID = 113  
GROUP BY courses.CourseID 
관련 문제