一个SQL语句的简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:25:47
有一个“学生-课程”数据库,数据库中包括三个表:
(1) “学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为关键字。
(2) “课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、 学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。
(3) “学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,
可记为: SC(Sno,Cno,Grade) (SNO, CNO) 为关键字。
注释:
1.由于新的数据库逐渐应用,所以以下各例题关于的多个表的连接问题均用INNER JOIN ON语句实现,不再用WHERE语句。(只在第一次出现多表连接时提醒一下)。
2.以下例题均不使用多余括号,并且在最后均写“;”。

24题.查询选修了课程1或者课程2的学生的交集。(不用嵌套)

select * from Student
inner join SC on Student.Sno=SC.SNO
inner join Course on Course.Cno=SC.CNO
where Course.Cname=N'课程1' and Course.Cname=N'课程2'

回2楼的:
汗 怎么不对?可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。
另外 要是楼主用的数据库是sql server,中文的话要加上N'',否则会是乱码

PS:另外 你的答案似乎也不符合 楼主要求 不用嵌套 你用的子查询就是嵌套查询了。。

SELECT Sno
FROM SC
WHERE Cno = '1' AND Sno IN
(SELECT Sno
FROM SC
WHERE Cno = '2')

21147813 写的貌似不对
where Course.Cname=N'课程1' and Course.Cname=N'课程2' 有这样的数据么?
我说的是 会有 同时 是课程1 和课程2的课程么 你用的是and 连接
上面我错了没注意括号里面的内容

select * from Student
inner join SC sc1 on Student.Sno=SC1.SNO
inner join SC sc2 on sc1.Sno=SC2.SNO
where sc1.Cno=1 and sc2.Cno=2
这样才对吧

ps:楼主 不管我们,就我们2个在交流。。。。