我有以下的sql查询,返回3级学生在测试中作出的。
学生1在考试中取得0,所以我的查询结果只返回两个学生的成绩,我怎么能在结果中包含零?我怎样才能返回0使用sql中的计数功能
select u.uno, u.fname, u.lname, count(q.qno) as Test1 from ((users u
LEFT OUTER JOIN userresponse ur on ur.uno = u.uno) left outer join
question q on q.correctanswer = ur.response and q.qno = ur.qno and
q.eno = ur.eno) where q.eno = '1' group by u.uno, u.fname, u.lname
ur.eno是考试1,那么问题编号和考试号连接并q.corectanswer = ur.response检查什么问题的用户得到正确的ur.uno = u.uno刚刚加入表。
对于什么数据库?这就是为什么不使用ANSI-89 JOIN语法(你的查询) - 没有OUTER JOIN支持,但是子查询将是等价的(但不太可取 - 相关的子查询有效)。 – 2012-03-11 07:09:19
@OMGPonies - 在大多数数据库中通常使用外连接功能(通常基于使用'+'或'*'装饰比较结果),但同意移动到ANSI连接要好得多 – 2012-03-11 07:30:41
@Damien_The_Unbeliever:是的,那里但它们也是供应商特定的。 [SQL Server](http://stackoverflow.com/questions/1428144/sql-what-does-mean),[Oracle](http://stackoverflow.com/questions/2425960/oracle-old-joins-a-工具脚本的转换) – 2012-03-11 15:33:08