SQL语句问题,请高手帮助。同时接三个表,做出一个成绩表

ielong 2005-04-30 03:29:03
1,三个表,

一个学生信息表, 一个学生成绩表, 一个课程分类表。
stuid pk gradeid pk classid pk
stuname grade classname
stusex classid
stuid

1,如何出最好各科成绩表,如下:

stuid stuname classname grade
1001 张三风 英文 99
1005 李三风 数学 94
等这样的。

2,如何写出出列表试形式

stuid stuname classname grade
1001 张三风 英文 没及格
1005 李三风 英文 及格

3,如何写出考试多于一科同学的成绩如下:

stuid stuname classname grade
1001 张三风 英文 99
1001 张三风 化学 96


请各位帮帮,小弟我感谢您……
...全文
152 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ielong 2005-04-30
  • 打赏
  • 举报
回复
回复:libin_ftsafe(子陌红尘)
第三个也出不来结果。

select
a.stuid,
a.stuname,
b.classname,
grade = case when c.grade < 60 then '没及格' else '及格' end
from
a,
b,
c
where
a.stuid = c.stuid
and
b.classid = c.classid
and
exists(select 1 from a where stuid=c.stuid and b.classid!=c.classid)
ielong 2005-04-30
  • 打赏
  • 举报
回复
回复:libin_ftsafe(子陌红尘)

这个比较正常,谢谢。
select
a.stuid,
a.stuname,
b.classname,
grade = case when c.grade < 60 then '没及格' else '及格' end
from
a,
b,
c
where
a.stuid = c.stuid
and
b.classid = c.classid
ielong 2005-04-30
  • 打赏
  • 举报
回复
回复:libin_ftsafe(子陌红尘)

select
a.stuid,
a.stuname,
b.classname,
c.grade
from
a,
b,
c
where
a.stuid = c.stuid
and
b.classid = c.classid
and
c.grade = (select top 1 grade from a where b.classid=c.classid order by grade desc)


好像不对。出来了很多条记录。。。
tdtjjiao 2005-04-30
  • 打赏
  • 举报
回复
2.
select a.stuid,a.stuname,c.classname,case when b.grade>60 then '及格' else '没及格' end as grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid

3.
select a.stuid,a.stuname,c.classname,b.grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid
where stuid in(select stuid from 成绩表 group by stuid having count(1)>1)

xluzhong 2005-04-30
  • 打赏
  • 举报
回复
3.
select a.stuid,a.stuname,c.classname,b.grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid
where b.stuid in(select stuid from 成绩表 group by stuid having count(1)>1)
tdtjjiao 2005-04-30
  • 打赏
  • 举报
回复
1.
select a.stuid,a.stuname,c.classname,b.grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid
where not exists(select 1 成绩表 where classid=b.classid and grade>b.grade)
xluzhong 2005-04-30
  • 打赏
  • 举报
回复
3.
select a.stuid,a.stuname,c.classname,b.grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid
where stuid in(select stuid from 成绩表 group by stuid having count(1)>1)
xluzhong 2005-04-30
  • 打赏
  • 举报
回复
2.
select a.stuid,a.stuname,c.classname,case when b.grade>60 then '及格' else '没及格' end as grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid
xluzhong 2005-04-30
  • 打赏
  • 举报
回复
1.
select a.stuid,a.stuname,c.classname,b.grade
from 学生表 a
inner join 成绩表 b
on a.stuid=b.stuid
inner join 课程表 c
on b.classid=c.classid
where not exists(select 1 成绩表 where classid=b.classid and grade>b.grade)
子陌红尘 2005-04-30
  • 打赏
  • 举报
回复
2
--------------------------------------
select
a.stuid,
a.stuname,
b.classname,
grade = case when c.grade < 60 then '没及格' else '及格' end
from
学生信息表 a,
课程分类表 b,
学生成绩表 c
where
a.stuid = c.stuid
and
b.classid = c.classid


3
--------------------------------------
select
a.stuid,
a.stuname,
b.classname,
grade = case when c.grade < 60 then '没及格' else '及格' end
from
学生信息表 a,
课程分类表 b,
学生成绩表 c
where
a.stuid = c.stuid
and
b.classid = c.classid
and
exists(select 1 from 学生成绩表 where stuid=c.stuid and classid!=c.classid)
子陌红尘 2005-04-30
  • 打赏
  • 举报
回复
最好各科成绩表:
--------------------------------------
select
a.stuid,
a.stuname,
b.classname,
c.grade
from
学生信息表 a,
课程分类表 b,
学生成绩表 c
where
a.stuid = c.stuid
and
b.classid = c.classid
and
c.grade = (select top 1 grade from 学生成绩表 where classid=c.classid order by grade desc)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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