首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

查询语句!

2012-03-20 
查询语句求助!!!!!!!!有三个表:学生信息、考试成绩、学籍变更。学生信息表字段:学号姓名性别出生年月家庭住址

查询语句求助!!!!!!!!
有三个表:学生信息、考试成绩、学籍变更。
学生信息表字段:
学号   姓名     性别     出生年月     家庭住址

考试成绩表字段:
学号   学期     语文   数学     英语

学籍变更表字段:
学号   变更方式     原因  

问题:要筛选出没有参加考试(就是没有考试成绩)同时学籍也没有发生变更的学生。
Select学生信息.学号   from学生信息,   考试成绩,   学籍变更
Where   学生信息.学号 <> 考试成绩.学号   and学生信息.学号 <> 学籍变更.学号
为什么执行不了这个查询语句?
此查询语句应该如何写?


[解决办法]
学生表A,成绩表B,学籍C
问题:要筛选出没有参加考试(就是没有考试成绩)同时学籍也没有发生变更的学生。
select * from A,C where (A.学号 not in (select 学号 from b) ) AND (c.学号=a.学号 and 变更方式=没有变更)

[解决办法]
如果是sql server数据库应该可以这么写

select * from 学生信息表 a,考试成绩表 b,学籍变更表 c
where a.学号 <> b.学号 and a.学号 <> c.学号

或者

select * from 学生信息表 a
inner join 考试成绩表 b on a.学号 <> b.学号
inner join 学籍变更表 c on a.学号 <> c.学号

[解决办法]
在三张表上的学生id字段建索引,试试
select StuID from Student s where
(not exists(select 1 from exam where Stu_D=s.StuID))
and (not exists(select 1 from Change where StuID=s.StuID))
或者
select StuID from Student s where
(not exists(select 1 from exam where s.Stu_D=StuID))
and (not exists(select 1 from Change where s.StuID=StuID))

热点排行