我正在使用MySQL。以下是我的SQL語句。 timetabledistribution
是我的交易表。這工作正常。但是這是返回NULL
記錄時teacherId = NULL
timetabledistribution
表中有記錄。 我相信這是因爲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
我有點困惑.... 你試過使得JOIN教師配置文件的LEFT OUTER 因此改變........ LEFT OUTER JOIN teacher_profiles c ON a.teacherId = c.teacherId – AntDC
有意義..我想我錯過了..謝謝你的建議 – fresher
@AntDC把它放到你的答案中。 – Barmar