我正在运行查询:
select course.course,iars.id,
students.rollno,
students.name as name,
teachers.name as tname,
students.studentid,
attndata.studentid ,sum(attndata.obt) as obt
sum(attndata.benefits) as ben , (sum(attndata.max)) as abc
from groups, students
left join iars
on iars.id
left join str
on str.studentid=students.studentid
left join course
on course.c_id=students.course
left join teachers
on teachers.id=iars.teacherid
join sgm
on sgm.studentid=students.studentid
left join attndata
on attndata.studentid=students.studentid and iars.id=attndata.iarsid
left join sps
on sps.studentid=students.studentid and iars.paperid=sps.paperid
left join semdef
on semdef.semesterid=str.semesterid
where students.course='1'
and students.status='regular'
and sps.paperid='5'
and iars.courseid=students.course
and iars.semester=str.semesterid
and semdef.month=9
and iars.paperid='5'
and str.semesterid='1'
and str.sessionid='12'
and groups.id=sgm.groupid
group by sps.studentid,
teachers.id,
semdef.month
order by
students.name
在此查询中,只要我在semdef.id=attndata.mon
上保持联接,我就会在semdef.id=null
的值得到零结果,但我想要所有结果,而不管semdef
,但我想要用它。如果它应该获取结果,如果值为null。你能帮忙吗?
答案 0 :(得分:2)
这可能是因为你的where子句在说
and semdef.month=9
你可能想要
and (semdef.month=9 OR semdef.id IS NULL)
或类似的东西。
答案 1 :(得分:1)
这是因为你的where子句有与semdef表相关的语句。将这些添加到join子句中,因为将它们放在暗示内连接的位置。
例如:
Left join semdef on xxx and semdef.id = attndata.min