2013-03-29 91 views
0

这里是一个问题,请记住我正在使用SQL开发人员3 ....我的select语句有什么问题?

学生服务部门想知道每个教员在向课堂以外的学生提供建议时的参与程度。提供教员编号列表和教职员建议的学生人数。将教师ID“Faculty ID”的输出列标题为“NumStuds”,学生输出列计为“NumStuds”。仅在教职员ID小于100且学生的名字或姓氏字段中输入值时才产生输出。通过教师ID出现在递增的顺序输出

这是我得到...

SELECT F_ID AS "Falculty ID" , COUNT S_ID AS "NumStud" FROM student 
WHERE (s_first, s_last, f_id) IS NOT NULL 
AND IS <= 100 
ORDER BY F_ID ACD 

然后我得到的错误错误命令开始行329:

SELECT F_ID AS "Falculty ID" , COUNT S_ID AS "NumStud" FROM student 
WHERE (s_first, s_last, f_id) IS NOT NULL 
AND IS <= 100 
ORDER BY F_ID ACD 

Error at Command Line:329 Column:42 Error report: SQL Error: ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected"

请帮忙!

+0

你也应该看你的命名约定:F_ID,F_ID。可能你的数据库不区分大小写,但有些数据库是我建议用小写字母做的所有事情的一切。 –

回答

1

你不能这样做,因为你正在测试null值。应该手动进行测试。

SELECT F_ID AS "Falculty ID" , COUNT(S_ID) AS "NumStud" 
FROM student 
WHERE (
      s_first IS NOT NULL OR 
      s_last IS NOT NULL OR 
      f_id IS NOT NULL 
     ) AND IS <= 100 
ORDER BY F_ID ASC 

其次,它应该为ASC升序ACD

+1

附上count语句:COUNT(S_ID)? –

+0

@joelharkes是的。你是对的。 –

+1

AND AND <= 100'不是一个有效的表达式 –

1

尝试:

SELECT F_ID AS "Faculty ID" , COUNT(S_ID) AS "NumStud" 
FROM student 
WHERE COALESCE(s_first, s_last) IS NOT NULL AND F_ID < 100 
GROUP BY F_ID 
ORDER BY F_ID ASC