0

我正在运行一个查询:

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,但我想使用它。如果值为空,它应该获取结果。你能帮帮忙吗?

4

2 回答 2

2

这可能是因为你的 where 子句在说

and semdef.month=9

你可能想要

and (semdef.month=9 OR semdef.id IS NULL)

或类似的东西。

于 2012-11-15T04:21:23.523 回答
1

这是因为您的 where 子句具有与 semdef 表相关的语句。将这些添加到 join 子句中,因为将它们放在 where 意味着内部连接。

例如:

Left join semdef on xxx and semdef.id = attndata.min
于 2012-11-15T04:20:32.293 回答