这样的查询错在哪里?该如何实现??

cdshrewd 2006-11-20 12:23:46
查询选修了三门以上课程的学生的学号、姓名及课程门数。
select Student.Sno,Sname,count(Cno)NUM From Student,SC group by(Student.Sno) having count(Cno)>3;
提示Sname即不在聚集函数中也不在group子句中
...全文
224 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdshrewd 2006-11-22
  • 打赏
  • 举报
回复
coolingpipe(冷箫轻笛)
说的很对,分已经送出,谢谢了
冷箫轻笛 2006-11-22
  • 打赏
  • 举报
回复
--上面的错误不在于多了一个sname,而在于多了一个括号。
这样写:

select Student.Sno,Student.Sname,count(Cno)NUM From Student,SC
group by Student.Sno, Student.sname
cdshrewd 2006-11-21
  • 打赏
  • 举报
回复
select Student.Sno,Student.Sname,count(Cno)NUM From Student,SC
group by(Student.Sno, Student.sname)
having count(Cno)>3;我自己开始也认为这样是对的,但是看下面:
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: ',' 附近有语法错误。
除掉group子句中的, Student.sname无语法错误,但是查询时出现
服务器: 消息 8120,级别 16,状态 1,行 1
列 'Student.Sname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
这正是我不理解的地方
allright_flash 2006-11-20
  • 打赏
  • 举报
回复
select Student.Sno,SC.Sname,count(SC.Cno)NUM From Student,SC group by(Student.Sno, SC.Sname) having count(SC.Cno)>3;
hhhdyj 2006-11-20
  • 打赏
  • 举报
回复
group by要包括出了统计函数外的所有字段。
也就是group by要包括snmae
marco08 2006-11-20
  • 打赏
  • 举报
回复
select Student.Sno,Sname,count(Cno)NUM From Student,SC group by(Student.Sno, Sname) having count(Cno)>3;
早起晚睡 2006-11-20
  • 打赏
  • 举报
回复
楼上都是正解
baobao28 2006-11-20
  • 打赏
  • 举报
回复
select Student.Sno,Sname,count(Cno)NUM From Student,SC
group by(Student.Sno, sname)
having count(Cno)>3;

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧