2016-01-22 73 views
1

我正在使用MySQL。以下是我的SQL語句。 timetabledistribution是我的交易表。這工作正常。但是這是返回NULL記錄時teacherId = NULLtimetabledistribution表中有記錄。 我相信這是因爲SQL語句中有一個INNER JOIN teacher_profiles c ON a.teacherId = c.teacherId。 如果teacherId = NULL,那麼有沒有可能避免或忽略此JOIN?或任何其他更好的辦法...INNER JOIN導致NULL RECORD SET

SELECT 
    CONCAT(a.periodWeekDayId, '.', a.periodId) as Id, 
    a.periodId, 
    a.periodWeekDayId, 
    a.subjectId, 
    b.subjectShortName, 
    a.teacherId, 
    CONCAT(c.teacherFirstName , ' ', COALESCE(c.teacherMiddleName, ''), ' ', c.teacherLastName) as teacherName , 
    e.classStd, 
    f.sectionName, 
    g.templateName, 
    h.periodLabel, 
    h.periodStartTime, 
    h.periodEndTime, 
    i.periodWeekDayName, 
    a.timeTableClassSectionId 
FROM timetabledistribution a 
    INNER JOIN subject_master b ON a.subjectId = b.subjectId 
    INNER JOIN teacher_profiles c ON a.teacherId = c.teacherId 
    INNER JOIN TimeTableClassSection d ON a.TimeTableClassSectionId = d.TimeTableClassSectionId 
    INNER JOIN class_master e ON d.classId = e.classId 
    INNER JOIN section_master f ON d.sectionId = f.sectionId 
    INNER JOIN TimeTableTemplate g ON d.timeTableTemplateId = g.timeTableTemplateId 
    INNER JOIN templatePeriodStructure h ON a.periodId = h.periodId 
    INNER JOIN templateWeekDaysStructure i ON a.periodWeekDayId = i.periodWeekDayId 
WHERE A.TimeTableClassSectionId='46' 

我想現場的其餘部分應該是除了老師詳細的teacherId返回NULL的特定記錄。 但是查詢忽略了整個記錄。

Id periodId periodWeekDayId ….. 
1 12  1 

但得到

Id periodId periodWeekDayId ….. 
NULL NULL  NULL 
+2

我有點困惑.... 你試過使得JOIN教師配置文件的LEFT OUTER 因此改變........ LEFT OUTER JOIN teacher_profiles c ON a.teacherId = c.teacherId – AntDC

+0

有意義..我想我錯過了..謝謝你的建議 – fresher

+0

@AntDC把它放到你的答案中。 – Barmar

回答

1

很高興幫助......

您是否嘗試過讓JOIN教呃型材左外所以改變........

LEFT OUTER JOIN teacher_profiles c ON a.teacherId = c.teacherId 
0

看到你正在推動這種從timetabledistribution表肯定,你可以簡單地追加到WHERE條件.... 所以它變得......

.. 
.. 
WHERE A.TimeTableClassSectionId='46' 
AND A.teacherID IS NOT NULL 
+0

它仍然給我NULL記錄SET。我希望剩下的字段應該返回,除了教師詳細信息,因爲teacherId對於該特定記錄是NULL。 – fresher

+0

如果有幫助,請在上面添加更多描述 – fresher