现在有3个表:
student(sno,sname,ssex,sage,sdept)---学生表(学号,姓名,性别,年龄);
course(cno,cname)---课程表(课程号,课程名);
sc(sno,cno)---选课关系表(学号,课程号)
(1)题目的要求是查询既选修了现代数据库技术,又选修了网络操作系统的学生的详细信息。
我的做法是集合查询,使用的是交操作“intersect”但是查询分析器总是报错“intersect附近语法错误”,搞不懂是怎么回事
代码如下:
select*
from student
where sno in(
select sno
from sc
where cno=(
select cno
from course
where cname='现代数据库技术'))
intersect
select *
from student
where sno in(
select sno
from sc
where cno=(
select cno
from course
where cname='网络操作系统'))
(2)查询计算机院没有选修现代数据库技术课程的学生的信息
我的代码如下,但是查询出来的结果与是错的,分析了好久,也不晓得问题出在什么地方了
select *
from student
where sdept='cs'and
not exists(
select sno
from sc
where cno=(
select cno
from course
where cname='现代数据库技术'))
初学数据库,希望大家支持。
student(sno,sname,ssex,sage,sdept)---学生表(学号,姓名,性别,年龄);
course(cno,cname)---课程表(课程号,课程名);
sc(sno,cno)---选课关系表(学号,课程号)
(1)题目的要求是查询既选修了现代数据库技术,又选修了网络操作系统的学生的详细信息。
我的做法是集合查询,使用的是交操作“intersect”但是查询分析器总是报错“intersect附近语法错误”,搞不懂是怎么回事
代码如下:
select*
from student
where sno in(
select sno
from sc
where cno=(
select cno
from course
where cname='现代数据库技术'))
intersect
select *
from student
where sno in(
select sno
from sc
where cno=(
select cno
from course
where cname='网络操作系统'))
(2)查询计算机院没有选修现代数据库技术课程的学生的信息
我的代码如下,但是查询出来的结果与是错的,分析了好久,也不晓得问题出在什么地方了
select *
from student
where sdept='cs'and
not exists(
select sno
from sc
where cno=(
select cno
from course
where cname='现代数据库技术'))
初学数据库,希望大家支持。
解决方案 »
- 如何让电脑自动从不同仓库发料(前提是所有仓的物料数量一定是大于或等于WO的物料需求的)
- 就10分了,肯求大家帮忙看下这个过程怎么写?
- 关于两个表的查问题
- 看看我对这个SQL 语句理解对不对!
- 本地数据库怎样用存储过程调用并更新远程数据库中的表
- 大家有没有见过这种问题:用adsL拨号上网,过一段时间,cpu就100%,查看任务管理器,sql server的运行程序占用cpu?
- 把一张表导出到CSV文件中,如何分列?
- 如何用c++实现画板中Ctrl+Z的撤销功能,急!!
- 我想在表里插入一个新的字段,但出现如下问题,希望能得到大家的帮助!
- 可不可以将WORD文档存到SQL SERVER 的image类型的字段?
- 问几个关于sql server开发的几个基础问题……
- 小菜请教一SQL语句的执行顺序。。
(
select a.sid from
(select sid from sc where cid in (select cid from course where cname='现代数据库技术')) a
inner join
(select sid from sc where cid in (select cid from course where cname='网络操作系统')) b
on a.sid=b.sid
)
语句:select s.*
from student s
join (
select sno from sc
join (
select cno from course
where cname ='网络操作系统' or cname ='现代数据库技术'
) c on sc.cno =c.cno
group by sno
having count(cno)>=2
) t on s.sno =t.sno
select s.*
from student s
where not exists (select 1 from sc join course c on sc.cno =c.cno where sc.cname ='现代数据库技术' and sc.sno =s.sno )
select * from student where sid in
(
select a.sid from
(select sid from sc where cid in (select cid from course where cname='现代数据库技术')) a
inner join
(select sid from sc where cid in (select cid from course where cname='网络操作系统')) b
on a.sid=b.sid
)结果是:
服务器: 消息 207,级别 16,状态 3,行 1
列名 'sid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'cid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'cid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'sid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'cid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'cid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'sid' 无效。
(
select sno from
(
select sc.sno from sc , course
where sc.cno = course.cno and (course.cname = '现代数据库技术' or course.cname = '网络操作系统')
) a
group by sno having count(*) = 2) b(2)查询计算机院没有选修现代数据库技术课程的学生的信息
select * from student where sdept = '计算机院' and sno not exists
(
select sc.sno from sc , course
where sc.cno = course.cno and course.cname = '现代数据库技术'
) a
select * from student where sid in
(
select a.sid from
(select sid from sc where cid in (select cid from course where cname='现代数据库技术')) a
inner join
(select sid from sc where cid in (select cid from course where cname='网络操作系统')) b
on a.sid=b.sid
)
修改SID和CID之后通过。
谢谢哦